JSP EL $ {stuff}语法不起作用

eor*_*ano 6 java jsp el

我有两个问题.第一个是我正在使用JSP而我无法解决.第二个是我得到一个奇怪的行为.

当我把它放在我的servlet的doGet()方法中时

req.setAttribute("test", "SARASA");
req.getRequestDispatcher("WEB-INF/main.jsp").forward(req, resp);
Run Code Online (Sandbox Code Playgroud)

这在"WEB-INF/main.jsp"中:

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

输出是:

SARASA ${test}
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么......这可能是什么原因?


更新:我解决了它添加

<%@ page isELIgnored="false" %>
Run Code Online (Sandbox Code Playgroud)

在我需要它的每个JSP中.奇怪的是,我在另一个项目中并不需要使用一些非常相似的web.xml和pom.xml文件(我正在使用maven).

Man*_*qui 10

您的web.xml可能引用了Servlet 2.3规范,默认情况下isELIgnored将其设置为true.如果您引用Servlet 2.4规范,isELIgnoredfalse默认设置为.

如果要引用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">
Run Code Online (Sandbox Code Playgroud)