gpt4 book ai didi

java - 如何在 JSF 中访问 map

转载 作者:行者123 更新时间:2023-11-30 05:07:38 24 4
gpt4 key购买 nike

我尝试使用 C:foreach 访问 jsf 中的 map 。但是我无法使用“#”符号访问 jsf 中的 map 。但是我可以使用“$”符号访问它。但是我需要访问使用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请帮助我。

最佳答案

这仅在您使用 JSP 2.1 或更高版本(Servlet 2.5 或更高版本)时才有效。在 JSP 2.0 或更早版本(Servlet 2.4 或更早版本)上,无法引用 c:forEach延迟 EL 变量 #{} 。延期的 EL #{}即最初是 JSF 1.0 的一部分,后来才集成到 JSP 2.1 中,大约在 JSF 1.2 发布时。但是,您应该能够使用标准 EL ${} .

<c:forEach items="${MapInJsf.nameMap}" var="nameMap">
<h:outputText value="Name2 : ${nameMap.key}"/>
<h:outputText value="Last Name1 : ${nameMap.value}"/>
</c:forEach>

但是您将无法将其绑定(bind)到 UIInput组件如 <h:inputText>${}表示法仅调用 bean getter,而不调用 setter。

如果您正在运行 servlet 2.5 兼容容器(例如 Tomcat 6.0 及更高版本),那么您需要确保您的 web.xml按照 Servlet 2.5 声明。 IE。根声明必须如下所示:

<web-app 
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="YourWebAppID"
version="2.5">

只有这样你才能使用延迟EL #{}在 JSP 标记(如 JSTL)上。

另请参阅:

关于java - 如何在 JSF 中访问 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4551132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com