我ui:repeat在互相嵌套时想调用侦听器时遇到问题。我也尝试过c:forEach,但是遇到了同样的问题。
ui:repeat
c:forEach
为了演示问题,我将代码简化为问题。有两个按钮,第一个位于第一个ui:repeat内部,将成功的调用为简单的侦听器。第二个按钮位于嵌套的ui:repeat元素内部,应调用与第一个按钮相同的侦听器,但永远不会调用该侦听器。
你能告诉我这怎么了吗?
<div> <ui:repeat var="testList" value="#{testBean.testList}"> <h:commandButton value="test1"> // the listener is called if I click this button <f:ajax event="click" execute="@this" listener="#{testBean.testListener}" /> </h:commandButton> <ui:repeat var="nestedList" value="#{testList.nestedList}"> <h:commandButton value="test2"> // the listener will not be called if I click this button <f:ajax event="click" execute="@this" listener="#{testBean.testListener}" /> </h:commandButton> </ui:repeat> </ui:repeat> </div>
这是一个已知的Mojarra问题,涉及到的中断状态管理<ui:repeat>。特别是,此问题报告为问题1817,自Mojarra 2.1.15起已修复。
<ui:repeat>
升级您的Mojarra版本。这是目前已经在2.1.19。