Как заявил Дмитрий из Openfaces, включение / отключение компонентов лица (Primefaces, Openfaces, Richfaces и т. Д.) Должно выполняться на стороне сервера.
Лучшее решение - использовать ajax при запуске события change! Событие onchange подходит для этой ситуации (представьте, что флажок установлен / снят, например, с клавиатуры)!
<h:selecBooleanCheckbox id="box" value="#{mybean.selecteditem.booleanvalue}"......>
<f:ajax execute="box" render="but" event="change" />
</h:selectBooleanCheckbox>
<h:commandButton id="but" action="someAction" value="someValue" disabled="#{!mybean.selecteditem.booleanvalue}" />
Таким образом, когда флажок снят, командная кнопка отключена, но если флажок установлен, кнопка включена.
В случае Primefaces рекомендуется использовать <p:ajax />
!
<p:ajax event="change" process="box" update="but"/>
В случае OpenFaces оба <f:ajax />
и <o:ajax />
работают нормально.
И если у вас есть несколько компонентов для рендеринга одновременно, просто укажите их идентификаторы, разделенные пробелом:
<f:ajax ......render="id1 id2 id3" />