Синтаксис JSP EL $ {stuff} не работает - PullRequest
6 голосов
/ 11 сентября 2011

У меня две проблемы.Во-первых, я использую JSP и не могу решить.Во-вторых, я получаю странное поведение.

Когда я помещаю это в метод doGet () моего сервлета

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

И это в "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).

1 Ответ

10 голосов
/ 11 сентября 2011

Ваш 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">
...