【问题标题】:Prevent selectBooleanCheckbox from changing value防止 selectBooleanCheckbox 改变值
【发布时间】:2014-10-07 21:38:29
【问题描述】:

我有一个 h:selectBooleanCheckbox,我想在托管 bean 中对其进行验证,然后再允许它更改它的值。

<h:selectBooleanCheckbox id="attr" value="#{handler.attribute}" onclick="submit()" 
    immediate="true"  valueChangeListener="#{handler.changeAttributeValue}" />

public String changeAttributeValue(ValueChangeEvent event) {
    if(condition)
        attribute=false;
return "home";
}

所以我想做的是在条件为真时阻止属性变为真。发生的情况是该属性最初设置为 false,但在方法退出后它再次变为 true。

【问题讨论】:

标签: jsf jsf-2 selectbooleancheckbox


【解决方案1】:

小心immediate="true"。提交的值不会被你的attribute取走,而是留在selectBooleanCheckbox-组件的组件模型中,所以下次再勾选。试试immediate=false。请确保您的托管 Bean 是 @SessionScoped,否则在您重新加载/重定向页面时它会忘记您的属性。

更帅:

<h:selectBooleanCheckbox id="attr" value="#{handler.attribute}">
    <f:ajax event="change" render="@this" listener="#{handler.changeAttributeValue()}" />
</h:selectBooleanCheckbox>

public void changeAttributeValue() {
if(condition)
    attribute=false;
return;
}

(无法正确检查代码,但经常使用此)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多