是否可以通过Ajax渲染/更新地图的c:forEach?

时间:2019-06-21 17:39:23

标签: jsf jsf-2.2

我相信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正确刷新?

0 个答案:

没有答案