2009-02-02 107 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