我有一些麻烦循环过哈希打印出它的价值观。可能有人仔细检查我的代码看到我在做什么错误的。我似乎找不到任何东西是错误的,但必须有一些东西。

在servlet,我添加以下请求:

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

在一个情况下"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>

循环是跑过一次但是所有产出都是空白的?!?我会至少具有预期的事项,如果它没了的循环一次。检查调试弹出于客户端,纪律是存在的循环。印到画面结果,在一些东西,看起来像一个地图给我(我已经缩短的输出):

{300=0, 1600=0, 200=0, ... , 2200=0}

我还试着用一个c:forEach但我越来越相同的结果。所以没有任何人有任何想法,我要去哪里错了吗?

谢谢你的任何输入, 李

有帮助吗?

解决方案

<ui:repeat>只接受列表或DataModel的,而不是设置或地图。这是关于路线图JSF 2.1

其他提示

与E1 2.2支持您可以迭代映射像的下方。

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

三件事情发生的对我说:

1.

文件的用户界面:重复 不说(它只是说 列表的),但是我看到UIRepeat使用 DataModel 作为其模式(方式h:数据表). 地图 将不会自动地包裹着 DataModel 类型的类型不是隐含的支持。你会需要做出值的一个实例,你自己 DataModel 执行情况或者提供他们作为一个隐含的支持的类型(例如 java。工具.列表).

2.

我不知道你打算这些价值的地图:

${item}
${item.key}
${item.item}

如果你改变"纪律"要的类型 列表<Map.Entry<String,String>>, 你可以结合 关键的和价值 性能:

${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());

3.

常见问题的建议 这JSTL标签是仅仅评估在组成树立的时间。目前还不清楚我是否使用c:为儿童的界面:重复将正常工作。你可能需要使用h:outputText代替。(我可能错了关于这一点,当然-我没有尝试过。)


在servlet,我添加以下要求

这听起来像一个奇怪的方式把东西放到请求的范围在JSF,但我相信,你知道你在做什么!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top