我相信JSF 2.2不会在Map
上进行迭代,因此必须使用c:forEach
。
我有一个按钮,可以通过Ajax在Map
中添加对象。之后,它render
Map
中的现有对象列表。我记录了它,并且值插入得很好。问题在于它们在xhtml页面中无法正确更新/刷新-好吧,有时是更新,有时不是。
<h:commandButton action="#{myController.addValue()}" type="submit" value="Add">
<f:ajax execute="@this input1 input2" render="@form" />
</h:commandButton>
...
<h:panelGroup id="valuelist">
<!-- This does not refresh properly -->
<c:forEach items="#{myController.main.values}" var="entry">
#{entry.value.name} / #{entry.value.description}
</c:forEach>
<!-- This does refresh properly -->
<ui:repeat var="entry" value="#{myController.main.values.entrySet().toArray()}">
#{entry.value.name} / #{entry.value.description}
</ui:repeat>
</h:panelGroup>
我想这与JSF阶段有关。我找到了使用ui:repeat
的解决方案,但是它将Map
转换为数组,因此我不确定它是否非常有效。如何使c:forEach
正确刷新?