我对这个简单的p:selectBooleanCheckbox组件有一个问题:
<p:selectBooleanCheckbox value="#{BackingBean.booleanFlag}">
<p:ajax event="change" global="false" />
</p:selectBooleanCheckbox>
在后台bean中,我在@PostConstruct方法中设置了布尔变量boolean flag = true的默认状态。为什么setter方法调用'false'值????以这种方式,似乎不可能有一个默认选中的复选框…
此行为也(且仅)发生在其他"布尔状态组件"中,如新的pf 5.0组件p:inputSwitch。(例如pf扩展的三状态复选框有一个基于字符串的状态,它工作得很好)
true表示已检查,false表示未检查....
private boolean booleanFlag = true; // DEFAULT CHECKED
public boolean isBooleanFlag() {
return booleanFlag;
}
public void setBooleanFlag(boolean value) {
this.booleanFlag = value;
}
问题是setBooleanFlag是用参数value = false
不,可以有一个默认的选中复选框,当你在后台bean中声明它时,只需将其值初始化为true
:
private boolean booleanFlag = true;
public boolean isBooleanFlag() {
return booleanFlag;
}
public void setBooleanFlag(boolean value) {
this.booleanFlag = value;
}
在你的页面:
<p:selectBooleanCheckbox value="#{BackingBean.booleanFlag}">
<p:ajax event="change" global="false" />
</p:selectBooleanCheckbox>