java如何在JSF中访问Map
我尝试使用C:foreach在jsf中访问map。但在jsf中,我无法使用“#”符号访问它。但我可以使用“$”符号访问它。但我需要使用jsf组件h:outputtext访问显示的。我的示例代码是
h:form binding="#{MapInJsf.initForm}">
<c:forEach items="#{MapInJsf.nameMap}" var="nameMap">
<%--<li>${nameMap.key}</li>--%> I cann access it
<%--<h:outputText value="#{nameMap}"/>--%>
<h:outputText value="Name2 : #{nameMap.key}"/>
<h:outputText value="Last Name1 : #{nameMap.value}"/>
</c:forEach>
</h:form>
我做错了什么,我如何才能访问它?我的参考链接是 Dynamic value binding of JSF component 请帮帮我
# 1 楼答案
这仅在使用JSP2.1或更新版本(Servlet2.5或更新版本)时才起作用。在JSP 2.0或更早版本(Servlet 2.4或更早版本)上,无法通过延迟EL
#{}
引用c:forEach
变量。延迟EL#{}
最初是JSF1.0的一部分,直到后来JSF1.2发布时才集成到JSP2.1中。但是,您应该能够使用标准EL${}
但是您将无法将它绑定到
UIInput
组件,比如<h:inputText>
,因为${}
符号只调用bean getter,而不是setter如果您正在运行与Servlet2.5兼容的容器(如Tomcat6.0及更高版本),那么您需要确保您的
web.xml
是按照Servlet2.5声明的。即,根声明必须如下所示:只有这样,您才能在JSTL等JSP标记上使用延迟EL
#{}
另请参见: