2011-09-10 35 views
5

我有兩個問題。第一個是我使用JSP,但我無法解決。第二個是我得到一個奇怪的行爲。

當我把這個在我的servlet

req.setAttribute("test", "SARASA"); 
req.getRequestDispatcher("WEB-INF/main.jsp").forward(req, resp); 

的doGet()方法而這在 「WEB-INF/main.jsp中」:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%= request.getAttribute("test") %> 
<c:out value="${test}"/> 

輸出是:

SARASA ${test} 

我不知道我在做什麼錯...可能是什麼原因呢?


更新:我解決了它加入

<%@ page isELIgnored="false" %> 

在每個JSP地方,我需要它。奇怪的是,我不需要在另一個項目中使用一些非常類似的web.xml和pom.xml文件(我正在使用maven)。

+0

測試代表了什麼? – confucius

+0

test是我設置的屬性的名稱(請參閱servlet),映射到一個字符串,上面寫着「SARASA」 – eordano

+0

參見我們JSTL wiki頁面的底部:http://stackoverflow.com/tags/jstl/info – BalusC

回答

10

您的web.xml可能引用了Servlet 2.3規範,默認情況下isELIgnored設置爲true。如果您改爲參考Servlet 2.4規範,則默認情況下,isELIgnored將被設置爲false

如果要引用了Servlet 2.4規範,你的web.xml頭應該是這個樣子:

<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"> 
+0

謝謝。問題是沒有提及任何東西......我沒有看到它,因爲它是在文檔類型中! (我通常忽略) <!DOCTYPE web-app PUBLIC 「 - // Sun Microsystems,Inc. //DTD Web Application 2.3 // EN」 「http://java.sun.com/dtd/web -app_2_3.dtd「> – eordano