Какой самый простой способ отобразить статус httpServletResponse.sendError (403, «Мое сообщение») из JSTL - PullRequest
6 голосов
/ 09 июля 2009

У меня есть сервлет, который выполняет некоторую проверку ошибок, и если что-то не так, я обычно делаю это:

response.sendError(403, "My message")
return;

Я не хочу выбросить исключение из сервлета - потому что я хотел бы соответствовать кодам статуса HTTP.

В файле web.xml я настроил следующее:

<error-page>
    <error-code>403</error-code>
    <location>/failure.jsp</location>
</error-page>

В файле fail.jsp я объявил об использовании JSTL и хотел бы отобразить сообщения об ошибках. Я знаю, что в скриптлетах могу делать следующее:

<%= request.getAttribute("javax.servlet.error.message") %>

Но я бы хотел использовать JSTL с некоторым предложением c: if, поэтому, если я могу отказаться от использования скриптлетов, это будет оценено.

Как я могу легко получить значения из оператора sendError в сервлете на странице ошибок с помощью JSTL?

Ответы [ 2 ]

11 голосов
/ 03 декабря 2009

скриптлет:

<%= request.getAttribute("javax.servlet.error.message") %>

можно перевести на следующий EL:

${requestScope['javax.servlet.error.message']}

Обозначение в скобках bean['foo.bar'] очень полезно, если у вас есть точки в Map или имена ключей с областями действия, потому что bean.foo.bar явно не возвращает желаемого Map или значения области.

0 голосов
/ 09 июля 2009

Объявите тег JSTL с атрибутом «var», который будет иметь объект исключения (если произошла какая-либо ошибка между телом тегов) в конце тега, который имеет свойства stackTrace и сообщения.

<c:catch var="myException">
<%int x=10/0; %>
</c:catch>

<c:if test="${myException !=null}">
There was an exception: ${myException.message} 
</c:if>
...