在页面刷新时设置 selectBooleanCheckbox 的值

Posted

技术标签:

【中文标题】在页面刷新时设置 selectBooleanCheckbox 的值【英文标题】:Set value of selectBooleanCheckbox on page refresh 【发布时间】:2017-08-19 10:07:17 【问题描述】:

在页面上我有启用/禁用 h:inputText 和 h:selectOneMenu 的复选框。在我刷新页面之前效果很好。复选框的值可能被浏览器缓存。

因此,当复选框在刷新后设置为“真”时,两个控件都会启用。 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>

编辑:添加了一些屏幕截图,以便更容易理解问题。

正确:用户打开的页面(复选框被选中,它对应于bean值,文本框被禁用,菜单被启用):

正确:用户未选中复选框(复选框未选中,bean 上的值也为 false,启用文本框,禁用菜单):

问题:取消选中用户刷新页面后。 bean 上的值为 true,但复选框仍未选中。此外,文本框和菜单都已启用。

【问题讨论】:

您是否尝试过使 bean 会话作用域? 感谢您的回答。添加了一些截图。 SessionScoped bean 提供相同的效果。 【参考方案1】:

嘿,我不太明白你的问题,但我想指出两点。

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

必须在

中才能使操作生效。

如果您希望方法 init 在创建视图的新实例之前生效,请添加注释 @PostConstruct 或简单地输入代码 " booleanValue = true; " 在视图的构造函数中。

希望我能有所帮助。

【讨论】:

Touché,就是答案。无论如何,在 Red Hat JBoss Developer Studio 9.0.0.GA 下工作我假设所有要生效的操作都必须在
中谢谢您更正答案。

以上是关于在页面刷新时设置 selectBooleanCheckbox 的值的主要内容,如果未能解决你的问题,请参考以下文章

QT5怎样设置父窗口刷新时,不刷新子窗口?

刷新页面时 Redux Store 设置为 null

请问ASP.NET中当点击某个控件时(如Button)不想进行整个页面的刷新怎样设置?

将标头发送到客户端后无法设置标头/服务器在页面刷新时崩溃

Angular 2 - Firebase 在页面刷新时保持登录状态

群里提到的IE设置问题 ---B/S 下页面刷新问题