java - 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:out value="${i}" /> 
  </c:forEach>
</body>
</html>

浏览器呈现如下:${i} ${i} ${i} ${i} ${i}

或者这个:

<c:set var="someVar" value="Hello"/>
<c:out value="${someVar}"/>

浏览器显示:${someVar}

我正在使用 Spring-MVC 3 和 Maven 构建示例项目,并将其部署到 Tomcat 7。 在 Spring 的上下文中,我将 View 解析器配置如下:

<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 的 Controller 传递的模型变量也未显示。

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>

那么,有什么解决办法的建议吗?

最佳答案

因此,EL (那些 ${} 东西)没有被执行?当您的 servletcontainer 以 Servlet 2.3/JSP 1.2 模式或更低版本运行,而您使用的是 JSTL 1.1 或更新版本时,就会发生这种情况。在从 JSTL 1.0 到 1.1 的变化过程中,EL 从 JSTL 转移到 JSP。那就是 JSP 2.0,它是 Servlet 2.4 的一部分。 JSP 1.2 及更早版本没有捆绑 EL。 JSTL 1.1 和更新版本没有捆绑 EL。

您需要确保您的 web.xml 根声明至少符合 Servlet 2.4。当您使用 JSP 2.1(它是 Servlet 2.5 的一部分)时,您显然以 Servlet 2.5 兼容容器为目标。因此,请确保您的 web.xml 根声明符合 Servlet 2.5:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
    version="2.5">

    <!-- Config here. -->

</web-app>

Tomcat 7 然而是一个 Servlet 3.0 兼容容器。我会考虑更改 maven pom 以声明 Servlet 3.0/JSP 2.2,以便您可以受益于所有新的 Servlet 3.0 功能。

另见:

关于java - JSTL 变量在 EL 中不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676636/

相关文章:

java - 使用 SOAP WS 返回错误 401 未经授权

javascript - JSP Javascript 上传文件

java - 如何以平台无关的方式启动 Jetty 并打开浏览器

java - Spring 登录将我重定向到登录页面,即使我看到的页面不 protected

java - 如何使用Socket的输入流处理来自浏览器的HTTPS get请求

java - 苔丝4J : How to get a Character's confidence value?

java - 在 Java8 中连接对象数组列表

java - 此 URL 类型 Servlet 错误不支持 HTTP 方法 GET

java - Spring JPA 对存储库的数据扫描不起作用

spring - @PostConstruct spring 在没有 bean 声明的情况下不会被调用