jsf - JSF复选框监听器

标签 jsf

<h:selectBooleanCheckbox id="deactivate" title="select to deactivate" />

我的JSF页面上有一个复选框和一个按钮。我希望仅在选中复选框后才能启用按钮。

JSF的方法是什么,而我的Java类上没有手动javascript也没有监听器方法。应该可以用类似的表达方式做到这一点;
"panel group rendered=#{}" 

渲染一个按钮以启用,渲染一个按钮或禁用一个按钮。

最佳答案

What is the JSF way of doing this with no javascript and no listener method on my java class


这是绝对不可能的。我收集到的实际上是“没有手动编写的JavaScript”(因此您接受 <f:ajax> 使用的JSF生成的JavaScript)和“没有手动编写的监听器方法”(因此您在组件树状态上接受了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>
就这样。不需要其他的JS代码,JSF bean属性或监听器方法。只是一个submit()操作方法。
在此示例中,binding属性会将 UIComponent <h:selectBooleanCheckbox> 引用放在Facelet范围内的变量名checkbox下。 EL表达式 #{checkbox.value} 返回组件的value属性,该属性表示在 UISelectBoolean 组件已经为boolean的情况下,准备在命令组件的disabled属性中使用。
注意:如果在较早的Eclipse版本中的disabled="#{not checkbox.value}"行遇到错误的EL错误,则需要按以下方式进行配置:窗口>首选项> Web> JavaServer Faces工具>验证>输入强制问题>一元运算 bool 强制问题将其设置为“警告”或“忽略”,而不是“错误”。从Eclipse Mars开始,这不再是必须的。
也可以看看:
  • How does the 'binding' attribute work in JSF? When and how should it be used?
  • 关于jsf - JSF复选框监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17167377/

    相关文章:

    security - 使用 javax.faces.STATE_SAVING_METHOD 在客户端保存 session 的含义

    css - 加载主题时出错,找不到 "theme.css"库的 "primefaces-start"资源

    jsf - f :websocket in JSF 2. 3

    jsf - 如何根据jsf中的 bool 变量显示两种不同类型的组件?

    html - JSF 2 中的纯 HTML 5 标记支持

    unit-testing - 如何测试使用 session 参数的 JSF bean 方法?

    java - 在网站上存储用户首选项的最佳方式?(不仅仅是字符串条目)

    forms - dataList 中有多个 remoteCommand,但只有一个调用

    java - 外部 f :ajax for composite component

    javascript - 使用 Javascript 访问 IFrame 的 HTML