<c:foreach>似乎没有在EL范围内找到迭代的Map.Entry

时间:2015-08-19 09:33:19

标签: jsf foreach hashmap jstl

我的问题是使用列表而不是地图解决的,但我在这里写下来因为我不明白地图有什么问题。

我在视图中定义了一个地图( myView.java ):

private Map<String, String> myMap = new HashMap<String, String>();

,它由一个从commandButton操作调用的方法动态填充:

<p:commandButton 
    value="#{txt['form.view']}"
    process="@form"
    icon="ui-icon-search"
    action="#{myView.populateMap}"
    update=":myForEach"
/>

我将一个项目放入地图中,使用动态键和值:

public void populateMap(){
        myMap.clear();
        myMap.put(getCode(this.param), getDetails(this.param));
    }

当我循环播放此地图时,它不会打印预期的内容:

WholeMap: #{myView.myMap}<br/>
<c:forEach items="#{myView.myMap}" var="item">
    Key: #{item.key} Value: #{item.value}<br/>
</c:forEach>

出乎意料的是,整个地图正确地打印在第一行,但当我尝试在forEach中打印时,项目键和值为空。

从视图类更改后,似乎无法找到地图的内容。如果我再次单击commandButton,只有当 populateMap 方法将相同的项放入地图时,它才能成功打印出预期的内容。

0 个答案:

没有答案