Java 使用JSF、MyFaces和;小脸

Java 使用JSF、MyFaces和;小脸,java,jsf,facelets,myfaces,Java,Jsf,Facelets,Myfaces,我在循环HashMap以将其值打印到屏幕上时遇到了一些问题。有人能再检查一下我的代码看看我做错了什么吗。我似乎找不出什么不对劲,但肯定有什么不对劲 在servlet中,我将向请求添加以下内容: Map<String, String> facetValues = new HashMap<String, String>(); // Filling the map req.setAttribute(facetField.getName(), facetValues); 我也尝

我在循环HashMap以将其值打印到屏幕上时遇到了一些问题。有人能再检查一下我的代码看看我做错了什么吗。我似乎找不出什么不对劲,但肯定有什么不对劲

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

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
req.setAttribute(facetField.getName(), facetValues);
我也尝试过c:forEach,但得到了相同的结果。有人知道我哪里出错了吗

谢谢你的意见,

我想到三件事:

一,

没有说它(它只说List),但我看到UIRepeat使用它作为模型(以h:dataTable的方式)。映射不会自动使用DataModel类型包装-该类型不受隐式支持。您需要将该值作为您自己的数据模型实现的实例,或者将其作为隐式支持的类型(例如java.util.List)提供

二,

我不确定这些值要映射到什么:

${item}
${item.key}
${item.item}
如果将“规程”更改为列表类型,则可以绑定到属性:

${item.key}
${item.value}
您可以这样创建列表:

Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
List<Map.Entry<String, String>> discipline
        = new ArrayList<Map.Entry<String, String>>(facetValues.entrySet());
MapFacetValues=newHashMap();
//填图
列出纪律
=新的ArrayList(facetValues.entrySet());
三,

结果表明,JSTL标记只在组件树创建时进行计算。我不清楚使用c:out作为ui:repeat的子级是否能正常工作。您可能需要改用h:outputText。(当然,我可能错了——我没有试过。)


在servlet中,我向请求添加以下内容


在JSF中,将某些内容放入请求范围听起来很奇怪,但我相信您知道自己在做什么

只接受列表或数据模型,不接受集合或映射。这是JSF2.1的路线图。

有了EL2.2支持,您可以像下面这样迭代映射

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



您能否澄清:您是否看到地图中每个项目的“项:,键:,值:”是否都有(但实际值未打印)?不是每个值都有。循环只迭代一次。但是我很确定我正在将正确的HashMap传递到循环中。干杯,Berkay,省去了我很多麻烦。
Map<String, String> facetValues = new HashMap<String, String>();
// Filling the map
List<Map.Entry<String, String>> discipline
        = new ArrayList<Map.Entry<String, String>>(facetValues.entrySet());
<ui:repeat value="#{myBean.stats.keySet().toArray()}" var="x">
    <h:outputText value="#{myBean.stats.get(x)}" /><br />
</ui:repeat>