【问题标题】:How to get state of SelectBooleanCheckbox in Ajax Listener?如何在 Ajax 侦听器中获取 SelectBooleanCheckbox 的状态?
【发布时间】:2013-09-23 08:17:15
【问题描述】:

我正在尝试根据复选框的状态在 ManagedBean 中执行一些操作。

复选框在这里:

<p:selectBooleanCheckbox id="cb">
    <p:ajax listener="#{myBB.checkboxChanged}"/>
</p:selectBooleanCheckbox>

监听器方法的签名是这样的:

public void checkboxChanged(AjaxBehaviorEvent event)

侦听器方法按预期调用,但我不确定如何获取复选框的状态(如果已选中) 这一直都是假的:

((SelectBooleanCheckbox)event.getSource()).isSelected()

我需要绑定复选框的值吗?我想避免这种情况,因为复选框是从循环中的枚举生成的,我没有任何布尔值来绑定它(模型的设计方式是我添加/删除枚举的实例到一个集合,不设置布尔属性)

我正在使用 Primefaces 3.5 在 Tomcat 6.0.36 上运行代码

JSF 实现是 Apache Myfaces 2.1.10

【问题讨论】:

    标签: ajax jsf primefaces managed-bean


    【解决方案1】:

    卢卡斯是对的,一切都很好。问题是我没有把按钮放在表单中。

    添加&lt;h:form&gt;标签后,一切正常。

    【讨论】:

    • 创建一个 MCV 示例总是很有帮助的。否则其他人会认为你有一个表单。
    【解决方案2】:

    您的代码在 Mojarra 2.2.1 和 PrimeFaces 4.0RC1 以及 Mojarra 2.0.3 和 PrimeFaces 3.5 上按预期工作。不幸的是,我手头没有 2.1。您使用的是哪个版本的 PrimeFaces?你能发布你的完整代码吗?

    【讨论】:

    • 我正在使用 primefaces 3.5 并在 Tomcat 6.0.36 上进行部署。什么有效? isSelected() 给你正确的价值?糟糕...我没有像我想的那样使用 JSF 2.1。
    • isSelected() 在我的测试环境中单击复选框时正确地在真/假之间交替。我在 Tomcat 7.0.34 上部署。
    • 看来是apache myfaces的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 2013-01-14
    • 2017-08-31
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多