在页面刷新时设置 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 的值的主要内容,如果未能解决你的问题,请参考以下文章
请问ASP.NET中当点击某个控件时(如Button)不想进行整个页面的刷新怎样设置?