这仅在使用JSP 2.1或更高版本(Servlet 2.5或更高版本)时才有效。在JSP 2.0或更高版本(Servlet
2.4或更高版本)上,无法
c:forEach通过延迟EL 引用变量
#{}。推迟的EL #{}最初是JSF 1.0的一部分,直到后来发布JSF1.2时才集成到JSP 2.1中。但是,您应该能够使用标准EL ${}。<c:forEach items="${MapInJsf.nameMap}" var="nameMap"> <h:outputText value="Name2 : ${nameMap.key}"/> <h:outputText value="Last Name1 : ${nameMap.value}"/></c:forEach>但是您将无法将其绑定到
UIInput组件,
<h:inputText>因为该
${}表示法仅调用bean getter,而不是setter。如果您正在运行与Servlet 2.5兼容的容器(例如Tomcat 6.0及更高版本),则需要确保已
web.xml根据Servlet
2.5声明了您的容器。即根声明必须如下:
<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">
只有这样,您才可以
#{}在JSTL之类的JSP标签上使用延迟的EL 。也可以看看:
- 有关统一表达语言的Java / JSP文章



