2009-02-02 103 views
2

在JSP页面(index.jsp)之后:EL在JSP停止评估

${requestContext.requestURL} is the URL 

只是显示表达式本身。它曾被评估为“http://.../somerset/

我在Eclipse中使用maven-archetype-webapp原型创建了Maven项目。 Jetty版本是jetty-6.1.14。

我的web.xml很简单:

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
    <servlet> 
     <servlet-name>SomersetServlet</servlet-name> 
     <display-name>SomersetServlet</display-name> 
     <description></description> 
     <servlet-class>com.foo.somerset.SomersetServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SomersetServlet</servlet-name> 
     <url-pattern>/som.do</url-pattern> 
    </servlet-mapping> 
</web-app> 

回答

8

Javascript String.replace(/\$/,str) works weirdly in jsp file对于一些可能的原因。

你的web.xml应包含参照网络app_2_4.xsd模式,像

<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/web-app_2_4.xsd" 
     version="2.4"> 

这使得Servlet 2.4和JSP 2.0处理,其中包括EL。

顺便说一句requestContext是无效的隐式对象。

+0

它正在工作!以前它的工作,并且当我搬到Maven,Maven原型自动生成忘记添加这些属性!谢谢!但是,mvn jetty:在第一次运行时运行,但在Eclipse中,需要多次尝试才能运行EL。 – yogman 2009-02-02 18:18:09

1

错误匹配的报价可能导致此现象,其中表达的只是被作为一个字符串处理。如果是这种情况,您的IDE通常会以不同的颜色突出显示。

0

要确保你有指令,以及其他图书馆,你可以使用包含在定义

<jsp:root ..... 

更多的信息在这里

http://java.sun.com/products/jsp/tags/12/syntaxref123.html

+0

据我所知EL工作没有任何标签库的声明,其实,它不使用任何标签库。并且,<%= 10 * 20%>正确地评估为200. – yogman 2009-02-02 18:01:41