ui:repeat 中的 selectBooleanCheckBox 不调用侦听器
selectBooleanCheckBox in ui:repeat doesn't call listener
我正在尝试使用 ui:repeat 填充 selectBooleanCheckbox 值,因为这些值取自列表。复选框值分配得很好,但是当我更改 selectBooleanCheckbox 值时不会调用侦听器。更改值
时我也遇到此错误
Illegal Syntax for Set Operation:
javax.el.PropertyNotWritableException: Illegal Syntax for Set
Operation
这是我的代码
<ui:repeat value="#{myBean.myObjects}" var="object">
<p:selectBooleanCheckbox
value="#{myBean.isObjectSelected(object)}">
<p:ajax update="growl"
listener="#{myBean.doSomethingtoObject(object)}" />
</p:selectBooleanCheckbox>
<h:outputText value="#{object.name}" />
</ui:repeat>
问题来自value="#{myBean.isObjectSelected(object)}"
部分。当我删除那部分时,错误消失了,监听器被称为正常。但是如果没有它,我怎么能得到复选框的值呢?即使我直接将值指定为 #{true}
也不会调用侦听器。我发现了类似的问题,但 ajax 个听众没有。
显然,selectBooleanCheckBox 必须有一个预定义的值,不能通过调用方法来填充。通过使用 Map 并在其中保留 TRUE 或 FALSE 值解决了这个问题。
<ui:repeat value="#{myBean.myObjects}" var="object">
<p:selectBooleanCheckbox
value="#{myBean.objectMap[object]}">
<p:ajax update="growl"
listener="#{myBean.doSomethingtoObject(object)}" />
</p:selectBooleanCheckbox>
<h:outputText value="#{object.name}" />
</ui:repeat>
我正在尝试使用 ui:repeat 填充 selectBooleanCheckbox 值,因为这些值取自列表。复选框值分配得很好,但是当我更改 selectBooleanCheckbox 值时不会调用侦听器。更改值
时我也遇到此错误Illegal Syntax for Set Operation: javax.el.PropertyNotWritableException: Illegal Syntax for Set Operation
这是我的代码
<ui:repeat value="#{myBean.myObjects}" var="object">
<p:selectBooleanCheckbox
value="#{myBean.isObjectSelected(object)}">
<p:ajax update="growl"
listener="#{myBean.doSomethingtoObject(object)}" />
</p:selectBooleanCheckbox>
<h:outputText value="#{object.name}" />
</ui:repeat>
问题来自value="#{myBean.isObjectSelected(object)}"
部分。当我删除那部分时,错误消失了,监听器被称为正常。但是如果没有它,我怎么能得到复选框的值呢?即使我直接将值指定为 #{true}
也不会调用侦听器。我发现了类似的问题,但 ajax 个听众没有。
显然,selectBooleanCheckBox 必须有一个预定义的值,不能通过调用方法来填充。通过使用 Map 并在其中保留 TRUE 或 FALSE 值解决了这个问题。
<ui:repeat value="#{myBean.myObjects}" var="object">
<p:selectBooleanCheckbox
value="#{myBean.objectMap[object]}">
<p:ajax update="growl"
listener="#{myBean.doSomethingtoObject(object)}" />
</p:selectBooleanCheckbox>
<h:outputText value="#{object.name}" />
</ui:repeat>