Jetty7独立+ jstl / jsp +弹簧3 = el / spring标签不起作用

时间:2012-03-14 18:08:09

标签: spring jsp jstl jetty el

我在Jetty7独立版和使用jsp / jstl / el的弹簧网络应用程序方面遇到了一些问题。 虽然使用maven jetty-plugin一切正常,但是一旦我切换到Jetty独立,所有EL消息,例如。 ${foobar}被忽略,以及弹簧标签。

我的示例JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<spring:message var="document_title" code="navigation.activity" />
<spring:message var="header_title" text="" code="navigation.activity" />
hello ${hello}

通过spring MVC controller

加载
@RequestMapping(value = "")
public String test(Model model) throws IOException {
    model.addAttribute("hello", "world");

    return "html/example";
}

的web.xml:

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

尝试使用和不使用以下依赖项:

    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>fmt</artifactId>
        <version>1.1.2</version>
        <scope>runtime</scope>
        <type>tld</type>
    </dependency>

    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>c</artifactId>
        <version>1.1.2</version>
        <scope>runtime</scope>
        <type>tld</type>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>runtime</scope>
    </dependency>

我甚至试图通过<%@ page isELIgnored="false" %>从JSP中启用EL,但后来我得到了这样的例外:

An error occurred at line: 21 in the jsp file: /WEB-INF/template/html/example.jsp
Generated servlet error:
/tmp/jetty-0.0.0.0-8080-test.war-_-any-/jsp/org/apache/jsp/WEB_002dINF/template/html/example_jsp.java:268: cannot find symbol
symbol  : method proprietaryEvaluate(java.lang.String,java.lang.Class<java.lang.String>,javax.servlet.jsp.PageContext,<nulltype>,boolean)
location: class org.apache.jasper.runtime.PageContextImpl
      out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${hello}", java.lang.String.class, (PageContext)_jspx_page_context, null, false));

我已经浏览了大量的网页,网上的问题,但还无法解决这个问题。 希望有人能够帮助我。提前谢谢!

1 个答案:

答案 0 :(得分:2)

不确定是什么解决了我的问题,但我从pom中删除了所有jsp / jstl依赖项并将web.xml设置为3.0。

<web-app
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.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_3_0.xsd"
    id="Your_Webapp_ID" version="3.0">

突然间它开始工作了。