2011-09-10 30 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