如何在Ajax Listener中获取SelectBooleanCheckbox的状态?

时间:2013-09-18 14:08:11

标签: ajax jsf primefaces managed-bean

我正在尝试根据复选框的状态在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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

添加<h:form>代码后,一切正常。