我尽可能地简化了我的问题。基本上,在我对其进行一些修改后,Map
没有正确打印。
我有以下xhtml代码:
<c:forEach items="#{personController.groupedPersons}" var="personG">
<p>
<h:commandButton action="#{personController.removePersonGroup(personG.key)}" type="submit" value="Remove">
<f:ajax render="@form" />
</h:commandButton>
</p>
<p>#{personG.key}</p>
<p>#{personG.value.size()}</p>
</c:forEach>
迭代Map
并打印其信息。对于每个键,都有一个按钮,允许从地图中删除它。
在我的personController
bean(@ViewScoped
和implements Serializable
)中使用此代码:
private HashMap<Integer, List<Person>> groupedPersons;
public void removePersonGroup(Integer age) {
groupedPersons.remove(age);
}
我的测试数据有key = 20和3个值(Person)和key = 30和1个值(Person)。我第一次加载页面并打印地图时效果很好。
removePersonGroup()
工作正常,groupedPersons
只有key = 30的单个元素。但是,当ajax刷新表单时,XHTML显示#{personG.key} = 20
(已删除)和#{personG.value.size()} = null
(未显示任何内容,value
为空)。我究竟做错了什么?我找不到问题更新
在进行第二次测试并在XHTML中显示错误的详细信息后,当我用另一个按钮刷新表单并刷新整个页面时,现在XHTML正确显示了实际数据!因此必须有一些东西(并发相关?)使XHTML显示错误的数据。