我正在使用JSF 2和PrimeFaces 4,并遇到以下问题:
我在我的XHTML中有以下代码:
我在我的XHTML中有以下代码:
<h:form id="form">
<table>
<tr id="formats">
<td>Formats</td>
<td>
<p:selectBooleanCheckbox value="#{bean.entity.formatted}">
<p:ajax event="change" update="formatsSelect" />
</p:selectBooleanCheckbox>
<p:selectOneMenu id="formatsSelect" rendered="#{bean.entity.formatted}">
<f:selectItems value="#{bean.formats}" />
</p:selectOneMenu>
</td>
</tr>
</table>
</h:form>
它会输出一个复选框和一个下拉菜单,我期望的是当我选中复选框时,下拉菜单应该出现,在取消选择时应该消失……但什么都没有发生,我反复选中和取消选择,下拉菜单没有任何变化。
理论上来说这应该可行,因为 selectBooleanCheckbox 的值与 entity.formatted 布尔值绑定,selectOneMenu 中呈现的值也与 entity.formatted 值绑定,并且 p:ajax
指向更新属性中的正确的 id,事件也是正确的。这最后一点我知道,因为我在 bean 中创建了一个侦听器,打印了 formatted 的值:
public void changeListener(){
System.out.println(this.entity.isFormatted());
}
并将p:ajax更改为:
<p:ajax event="change" update="formatsSelect" listener="#{bean.changeListener}" />
它在控制台中打印了格式化的值。 我做错了什么?