使用JSF,MyFaces和Facelets迭代HashMap的麻烦

Lee*_*ald 3 java jsf facelets myfaces

我在循环HashMap以将其值打印到屏幕上时遇到了一些麻烦.有人可以仔细检查我的代码,看看我做错了什么.我似乎找不到任何错误,但必须有一些东西.

在servlet中,我将以下内容添加到请求中:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
req.setAttribute(facetField.getName(), facetValues);
Run Code Online (Sandbox Code Playgroud)

在一种情况下,"facetField.getName()"评估为"纪律".所以在我的页面中我有以下内容:

<ui:repeat value="${requestScope.discipline}" var="item">
  <li>Item: <c:out value="${item}"/>, Key: <c:out value="${item.key}"/>, Value: <c:out value="${item.item}"/></li>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)

循环运行一次,但所有输出都是空白的?!?如果它已经超过循环一次,我至少会期望项目中的某些东西.检查Facelets的调试弹出窗口,纪律是在那里和循环.将它打印到屏幕会产生一些看起来像我的地图(我缩短了输出):

{300=0, 1600=0, 200=0, ... , 2200=0}
Run Code Online (Sandbox Code Playgroud)

我也尝试过ac:forEach,但我得到了相同的结果.所以有人有任何想法,我出错了吗?

谢谢你的任何意见,李

小智 12

有了2.2支持,你可以迭代下面的地图.

<ui:repeat value="#{myBean.stats.keySet().toArray()}" var="x">
    <h:outputText value="#{myBean.stats.get(x)}" /><br />
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)


Lin*_*oln 10

<ui:repeat>只接受List或DataModel,而不接受Sets或Maps.这是JSF 2.1的路线图.