在JSF UIRepeat中使用<p:ajax>可以防止组件</p:ajax>的呈现

时间:2013-01-25 08:29:37

标签: jsf-2 primefaces

我有一个jsf,我想在其中显示一个复选框列表。如果我像以下示例中那样创建它,则会正确呈现复选框。

<p:outputPanel layout="block" rendered="#{scheduleConfigBean.selectedMonthType == 1}" style="width: 400px; margin-top: 45px">
  <ui:repeat var="monthDay" value="#{scheduleConfigBean.monthDays}">
    <p:selectBooleanCheckbox value="#{monthDay.checked}" />
    <h:outputText value="#{monthDay.name}" />
  </ui:repeat>
</p:outputPanel>

但是当我向每个复选框添加一个ajax事件监听器时,该面板不再呈现。我的问题在这里是什么?

<p:outputPanel layout="block" rendered="#{scheduleConfigBean.selectedMonthType == 1}" style="width: 400px; margin-top: 45px">
  <ui:repeat var="monthDay" value="#{scheduleConfigBean.monthDays}">
    <p:selectBooleanCheckbox value="#{monthDay.checked}">
      <p:ajax listener="#{scheduleConfigBean.updateMonthlyButtonState}" update="saveBtn" />
    </p:selectBooleanCheckbox>
    <h:outputText value="#{monthDay.name}" />
  </ui:repeat>
</p:outputPanel>

1 个答案:

答案 0 :(得分:0)

感谢Darka,他的回答为我提供了解决方案。

<p:outputPanel layout="block" rendered="#{scheduleCreate.selectedMonthType == 1}" style="width: 500px; margin-top: 45px">
  <c:forEach items="#{scheduleCreate.monthDays}" var="monthDay" varStatus="status">
    <p:selectBooleanCheckbox value="#{monthDay.checked}" style="margin-left: 8px">
      <p:ajax listener="#{scheduleCreate.updateButton}" update="saveBtn" />
    </p:selectBooleanCheckbox>
  </c:forEach>
</p:outputPanel>