当前位置: 首页 > 知识库问答 >
问题:

在页面刷新时设置selectBooleanCheckbox的值

柯昱
2023-03-14

在页面上,我有一个复选框,它启用/禁用h:inputtext和h:selectonemenu。在我刷新页面之前,这很好用。checkbox的值可能由浏览器缓存。

因此,当刷新后将复选框设置为“true”时,两个控件都将启用。selectOneMenu对应于init()方法中设置的值呈现,但selectBooleanCheckbox和inputText不是。我该怎么解决呢?我使用火狐浏览器。

Backing bean很简单,有一个属性和一个方法-init,其中的值设置为false。

@ManagedBean(name="newBean")
@ViewScoped
public class NewBean implements Serializable {
    private boolean booleanValue;  

    public NewBean() {

    }   

    public void init()
    {
        booleanValue = true;
    }   

    public boolean isBooleanValue() {
        return booleanValue;
    }

    public void setBooleanValue(boolean booleanValue) {
        this.booleanValue = booleanValue;
    }
}
<h:body>
    <f:metadata>
        <f:viewAction action="#{newBean.init()}"></f:viewAction>
    </f:metadata>

    <h:form>
        <h:outputText value="#{newBean.booleanValue}"></h:outputText>
        <br/>
        <h:selectBooleanCheckbox value="#{newBean.booleanValue}" id="selected">
            <f:ajax event="change"
                    render="enabledInput disabledInput enabledMenu"></f:ajax>
        </h:selectBooleanCheckbox>
        <br/>
        <h:inputText disabled="#{newBean.booleanValue}" id="enabledInput"></h:inputText><br/>
        <h:selectOneMenu disabled="#{!newBean.booleanValue}" id="enabledMenu">
            <f:ajax></f:ajax>
        </h:selectOneMenu>
    </h:form>
</h:body>

正确:User unchecked checkbox(checkbox未选中,bean上的值也为false,textbox启用,菜单禁用):

问题:取消勾选用户刷新页面后。bean上的值为true,但checkbox仍未选中。此外,textbox和menu都已启用。

共有1个答案

咸弘雅
2023-03-14

嘿,我不是很明白你的问题,但我想指出两件事。

<f:metadata>
<f:viewAction action="#{newBean.init()}"></f:viewAction>
</f:metadata>

操作必须为 才能生效。

此外,如果希望方法init在创建视图的新实例之前生效,请添加注释@postConstruct或将代码“booleanValue=true;”放在视图的构造函数中。

 类似资料:
  • 问题内容: 我是新手。我正在使用获取对象列表并将其显示在第一页上的服务。然后根据单击的对象,在下一页上设置选项卡标题。但是,当我刷新页面时,列表的范围丢失了,并且选项卡头引发了异常,导致页面无法显示信息。即使刷新第二页,是否可以保留上一个屏幕上单击了哪个对象的信息? 问题答案: 您可以使用角度本地存储 角度本地存储 示例如何使用它: 使用本地存储的示例

  • 我在xhtml页面中有一个bean类和一个selectBooleanCheckbox。我希望在点击框时,应该在支持bean中设置值。 以下是代码: Bean类: 但是getter和setter仅在页面加载时调用。如何在单击复选框时在bean方法中设置值。

  • 问题内容: 我有一个文件,其中我在页面顶部显示外部页面(使用iframe),其他部分是写在文件中的html代码的输出。 HTML代码如下所示: 现在,我想以编程方式刷新页面而不刷新。 我的问题是我可以不刷新页面就刷新页面吗? 答案/提示将不胜感激。 问题答案: 该嵌在主HMTL页面(或在JSP)。因此,如果刷新页面,则肯定会再次加载iframe。 为了避免这种情况,我可以考虑以下两种选择: 使用A

  • 概述 我有div#lead_form在页面加载后5秒内滑下来。在这个div中,我有一个submit按钮。每当有人单击submit时,#lead_form中的表单将验证输入字段并刷新页面。 问题 每次表单验证时,它都会刷新网页,而div#lead_form SlideDown需要5秒才能滑入。我想做的是,有一个true false变量,并检查提交按钮是否被点击,如果为true,则禁用div#lead

  • 本文向大家介绍AngularJS实现页面定时刷新,包括了AngularJS实现页面定时刷新的使用技巧和注意事项,需要的朋友参考一下 有时我们在前端可能会有这样的需求: 1、每隔一段时间刷新一下页面中的数据 2、根据需要可以暂停和启用刷新 接下来我们就来看下AngularJS的实现方法: 首先我们了解到AngularJS中$interval可以用来处理间歇性处理一些事情,那么我们的间歇性刷新就使用i

  • 我制作了一个非常简单的登录和会话结构,以便在未来基于JSP的应用程序中重用。是这样的: 而位于WebContent根目录的login.jsp页面有一个 表单,其中包含用于身份验证的专用innerHTML和一个用于接收会话超时或登录失败消息的${failure}字段。 这个结构对我来说很管用。它拦截、请求登录、检查会话和身份验证,等等,但有一个小缺陷:如果您在登录页面并在超时后刷新它(F5或在URL