Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSTL变量未在EL中显示_Java_Jsp_Spring Mvc_Jstl_El - Fatal编程技术网

Java JSTL变量未在EL中显示

Java JSTL变量未在EL中显示,java,jsp,spring-mvc,jstl,el,Java,Jsp,Spring Mvc,Jstl,El,JSTL变量值不显示在EL中。例如,此代码: <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="s" uri="http://www.springframework.org/tags" %> <html> <body> <c:forEach var="i" begin="1" end="5" > <c:

JSTL变量值不显示在EL中。例如,此代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<html>
<body>
  <c:forEach var="i" begin="1" end="5" >
    <c:out value="${i}" /> 
  </c:forEach>
</body>
</html>
浏览器显示:
${someVar}

我正在使用SpringMVC3和Maven构建示例项目,并将其部署到Tomcat7。 在Spring的上下文中,我将视图解析器配置如下:

<bean class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="
        org.springframework.web.servlet.view.JstlView"></property>
    <property name="prefix" value="/WEB-INF/"></property>
    <property name="suffix" value=".jsp" />
</bean>

从Spring控制器传递的模型变量也未显示

Mavens pom.xml具有以下与jstl相关的依赖项:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
</dependency>

javax.servlet
jstl
1.2
运行时
javax.servlet.jsp
jsp api
2.1
假如
那么,有什么建议可以解决这个问题吗?

那么,(那些
${}
东西)就不会被执行了?当您使用JSTL 1.1或更新版本时,servletcontainer在Servlet2.3/JSP 1.2 modus或更低版本上运行时,可能会发生这种情况。在从JSTL 1.0更改为1.1的过程中,EL从JSTL移动到JSP中。这就是JSP2.0,它是Servlet2.4的一部分。jsp1.2及更早版本没有绑定EL。JSTL1.1及更新版本没有绑定EL

您需要确保
web.xml
根声明至少符合Servlet 2.4。当您使用JSP2.1时,它是Servlet2.5的一部分,显然您的目标是与Servlet2.5兼容的容器。因此,请确保您的
web.xml
根声明符合Servlet 2.5:


然而,Tomcat7是一个与Servlet3.0兼容的容器。我会考虑更改Maven POM来声明servlet 3 /JSP 2.2,这样您就可以受益于所有新的Servlet 3特性。 另见:

非常感谢!这一宣言起了作用。这是否意味着我不应该关心lib中任何与jstl相关的jar,因为我使用的是与Servlet 2.5兼容的web容器?取决于目标容器。例如,Tomcat不附带JSTL。所以您仍然需要JSTL罐。另请参见“我们的JSTL wiki页面”链接。注意,Tomcat7与Servlet3.0兼容。但是您在maven pom中使用了JSP2.1而不是JSP2.2,所以您可能实际上是针对Servlet 2.5生产环境。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.1</version>
    <scope>provided</scope>
</dependency>