如何在JSF中展示Map<String, Object>类型数据?
JSF中展示Map<String, Object>数据的正确实现
原代码存在的问题
- 外层
<c:forEach>里的entrySet().toArray()完全多余,直接遍历entrySet()即可,转数组会导致遍历元素类型异常,无法正常获取key和value。 - 内层
<c:forEach>误用了value属性(正确属性应为items),更关键的是:Map的value是单个自定义对象而非集合,根本不需要内层循环,直接访问该对象的属性即可。
修正后的代码
<c:forEach items="#{accountController.infoCli.entrySet()}" var="info"> <p><h:outputText value="#{info.key}"/></p> <!-- 直接通过info.value访问对象属性,无需内层循环 --> <ui:include src="你的模板文件路径.xhtml"> <ui:param name="beneficiaire" value="#{info.value.objectName}"/> <ui:param name="prelCBInfos" value="#{info.value.list1}"/> <ui:param name="aboPrelInfos" value="#{info.value.list2}"/> </ui:include> </c:forEach>
必要注意事项
- 确保
getInfoCli()返回的Object对应类有公共getter方法(如getObjectName()、getList1()、getList2()),EL表达式只能通过公共getter访问属性。 <ui:include>的src属性必须填写实际的模板文件路径,不能留空。
内容的提问来源于stack exchange,提问作者loubna damri
相关产品推荐
相关产品推荐

