如何enable/disable SelectMany 根据方法返回值进行校验?

How to enable/disable SelectManyCheck based on method returned value?

任何人都可以帮助通过 jsf 页面中的 ajax ex(SelectManyCheckbox, textbox ..etc) 从 bean 中的方法获取 returned 值到 enable/disable 组件基于选定的单选按钮。首先应该禁用 SelectManyCheckbox 组件,然后根据选择启用它。该方法正在检查值是 "A" 还是 "B" 并且它将 return 值。这是方法代码:

private String firstToggle="True";    
public String firstToggle(AjaxBehaviorEvent e){

        firstToggle=requestType;
        System.out.print("Value "+firstToggle);

        return firstToggle;
    }

这里会returnA或B.

但是,当我尝试 disable/enable SelectManyCheckbox 组件时,当值为 B 时,SelectManyCheckbox 组件不会选取禁用属性中的值。

 <p:selectManyCheckbox id="Cars" value="#{user.xyz}" layout="pageDirection" disabled="#{user.firstToggle}=='B')">
<f:selectItems value="#{user.xyz}" var="xyz" itemLabel="#{xyz}" itemValue="#{xyz}"/>
</p:selectManyCheckbox>

所以请帮忙

您不想按照 Tiny 的评论建议将 firstToggle 用作 Boolean/boolean 的原因真的不清楚!但是,如果您有理由这样做,或者您正在另一个地方处理 firstToggle,并且您想在两个不同的 p:selectManyCheckbox 中使用它的值 'A' 或 'B'( "where one should be enabled and the other should be disabled" 正如你所说),那么你可以用 disabled="#{user.firstToggle eq 'B'}" 实现 第一个 第二个 16=] 或 disabled="#{user.firstToggle ne 'B'}".

如果您想按照 Tiny 的建议使用 Boolean/boolean,则只需使用 第一个 disabled="#{user.firstToggle}" 第二个 disabled="#{not user.firstToggle}"

注意:还有private String firstToggle="True";即使是正确的,也没有任何意义,要么用Boolean/boolean和assigne true 给它,或者 assign 'A' 这似乎意味着 false 关于你的上下文。