禁用/启用primefaces组件

Spa*_*tan 2 primefaces jsf-2

我想在选择之后禁用一些primefaces组件,p:selectOneMenu但是当我选择没有选择选项时它仍然被禁用

<p:outputLabel value="Manager" style="color:white;font-weight: bold;" />
<p:selectOneMenu id="manager" value="#{employeeMB.selectedManager}" immediate="true">
     <f:selectItem itemLabel="Selectionner..." noSelectionOption="true"/>
     <f:selectItems value="#{employeeMB.managers}"  />
     <p:ajax update="managerSelect role"  />
</p:selectOneMenu>

<p:outputLabel value="Est un Manager" 
               style="color:white;font-weight: bold;" />
<p:selectBooleanCheckbox id="managerSelect" 
                         value="#{employeeMB.employee.isManager}" 
                         disabled="#{employeeMB.selectedManager != null}" />

<p:outputLabel for="role" value="Role Utilisateur" style="color:white;font-weight: bold;" />
<p:selectManyCheckbox id="role" value="#{employeeMB.selectedRoles}">
    <f:selectItem itemLabel="Employée" itemValue="ROLE_EMPLOYEE" />
    <f:selectItem itemLabel="Manager" itemValue="ROLE_MANAGER" itemDisabled="#{employeeMB.selectedManager != null}"/>
    <f:selectItem itemLabel="RH" itemValue="ROLE_RH" itemDisabled="#{employeeMB.selectedManager != null}"/>
</p:selectManyCheckbox>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 5

当更新的模型值不是null,但是为空字符串时,可能会发生这种情况.您需要重新配置JSF以解释空字符串提交的值,null以避免模型通过下面的条目被空字符串污染web.xml.

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

尽管如此,更好地使用#{not empty bean.property}而不是#{bean.property != null}.它还包括空字符串.


具体问题无关,noSelectionOption在那里没用.仔细阅读为JSF中的selectOneMenu添加"未选择"选项的最佳方法,以了解它.我也怀疑你对immediate那里属性的理解.摆脱它.由于所有的ajax魔法,它在JSF 2.x世界中已经没有任何明智的价值了.