在jsp上无法访问ModelAttributes

时间:2010-02-24 04:10:19

标签: java spring jsp spring-mvc

使用MAven创建了一个新的Spring MVC项目,我遇到了一个问题,即在jsp页面上没有替换modelAttributes。例如,

<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html" %>

Hello Worlds ${location} is ${weathers}
<c:out value="${location}"/>

显示器

Hello Worlds ${location} is ${weathers}
${location}

而不是

Hello Worlds Omaha is Cold
Omaha

我猜我错过了一个jar,我在mvn依赖列表中有以下内容:

   <dependency>
       <groupId>taglibs</groupId>
       <artifactId>standard</artifactId>
       <version>1.1.2</version>
   </dependency>
   <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-servlet_2.4_spec</artifactId>
       <version>1.1.1</version>
   </dependency>
   <dependency>
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <version>2.4</version>
       <scope>provided</scope>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring</artifactId>
       <version>2.0.7</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
       <version>2.5.5</version>
   </dependency>

2 个答案:

答案 0 :(得分:4)

我引用我之前提供的answer来解决EL无法正常工作的问题:

  

换句话说,EL表达式没有得到评估?这可能有以下一个或多个原因:

     
      
  1. 有问题的应用程序服务器不支持JSP 2.0。
  2.   
  3. web.xml未声明为Servlet 2.4或更高版本。
  4.   
  5. @page配置了isELIgnored=true
  6.   
  7. web.xml在<el-ignored>true</el-ignored>中配置了<jsp-config>
  8.   

在您的特定情况下,1)可能会被划伤。 3)和4)太明显无法监督,因此也可能被划伤。留下第2点)。您的web.xml显然是使用旧版本声明的。确保您的web.xml被声明为至少 Servlet 2.4:

<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_4.xsd"
    version="2.4">

    <!-- Here you go. -->

</web-app>

答案 1 :(得分:3)

我想你的servlet容器正在使用JSP pre-2.0,默认情况下会忽略EL。检查与其捆绑的内容。

无论如何,您必须指定以下内容:

<%@ page isELIgnored="false" %>