JSF复选框监听器

Spr*_*ing 5 jsf

<h:selectBooleanCheckbox id="deactivate" title="select to deactivate" />
Run Code Online (Sandbox Code Playgroud)

我的JSF页面上有一个复选框和一个按钮.我希望仅在选中复选框时才启用该按钮.

在我的java类中没有手动javascript和没有监听器方法的JSF方式是什么.应该有一种方式可以用一种表达方式来做;

"panel group rendered=#{}" 
Run Code Online (Sandbox Code Playgroud)

一个按钮呈现为启用,一个按钮呈现或禁用.

Bal*_*usC 14

在我的java类中没有javascript和没有监听器方法的JSF方式是什么

这根本不可能.我收集到你实际上的意思,"没有手动编写的JavaScript"(因此你接受使用的JSF生成的JavaScript <f:ajax>)和"没有手动编写的监听器方法"(因此你在组件树状态下接受JSF自己的魔法).

在这种情况下,这应该做:

<h:form>
    <h:selectBooleanCheckbox binding="#{checkbox}">
        <f:ajax render="button" />
    </h:selectBooleanCheckbox>
    <h:commandButton id="button" value="submit" 
        action="#{bean.submit}" 
        disabled="#{not checkbox.value}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

就这样.不需要额外的JS代码或JSF bean属性或侦听器方法.只是一种submit()行动方法.

binding在此示例中,该属性将Facelet范围内的UIComponent引用放在<h:selectBooleanCheckbox>变量名称下checkbox.EL表达式#{checkbox.value}返回value组件的属性,该属性表示UISelectBoolean组件已经存在的情况boolean,可以在命令组件的disabled属性中使用.

注意:如果您disabled="#{not checkbox.value}"在较旧的Eclipse版本中遇到错误的EL错误,那么您需要按如下方式对其进行配置:窗口>首选项> Web> JavaServer Faces工具>验证>类型强制问题>一元操作布尔值强制问题将其设置为警告忽略而不是错误.自Eclipse Mars以来,这不再是必需的了.

也可以看看: