Как преобразовать JSP (пользовательские теги) в код в сервлете в Spring Security? - PullRequest
0 голосов
/ 02 ноября 2009

Я работаю над проектом, в который мне нужно включить код из JSP . Этот JSP имеет следующий код (относится к Spring Security ) ...

<%@ taglib prefix='c' uri='http://java.sun.com/jstl/core_rt' %>
<%@ page import="org.springframework.security.ui.AbstractProcessingFilter" %>
<%@ page import="org.springframework.security.ui.webapp.AuthenticationProcessingFilter" %>
<%@ page import="org.springframework.security.AuthenticationException" %>
....
<c:if test="${not empty param.login_error}">
      <font color="red">
        Your login attempt was not successful, try again.<br/><br/>
        Reason: <c:out value="${SPRING_SECURITY_LAST_EXCEPTION.message}"/>.
      </font>
</c:if>
....
<c:if test="${not empty param.login_error}"><c:out value="${SPRING_SECURITY_LAST_USERNAME}"/></c:if>
...

Вот что я попытался проверить в своем сервлете:

enumr = request.getAttributeNames();
while(enumr.hasMoreElements())
{
    String element = enumr.nextElement()+"";
    out.print("<h3>Read an element:");
    out.print(element+" » ");
    out.print(request.getAttribute(element));
    out.print("</h3>");
}

и соответствующий вывод:

Read an element:__spring_security_session_fixation_filter_applied » true
Read an element:__spring_security_filterSecurityInterceptor_filterApplied » true
Read an element:hibernateFilter.FILTERED » true
Read an element:__spring_security_session_integration_filter_applied » true
Read an element:requestContextFilter.FILTERED » true

Обоснованное предположение, что я могу сделать ошибку при чтении, _spring_security_filterSecurityInterceptor_filterApplied , показывает, что произошла ошибка.


Как мне прочитать сообщение об ошибке?

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Прежде всего: вы не используете Facelets. Вы используете JSP. Обе эти технологии являются независимыми технологиями просмотра от Sun, в которых Facelets менее или более видны как JSP на стероидах. Так что эта тема неправильно помечена Facelets.

Во-вторых, тег HTML устарел с HTML 4.01 в 1998 году. Вам следует использовать CSS.

Возвращаясь к вашей проблеме: я не делаю Spring, поэтому я не могу вдаваться в подробности, но вы проверили атрибуты сессий? Быстро погуглив ключ «SPRING_SECURITY_LAST_EXCEPTION.message», я узнаю, что он хранится в области действия сеанса.

0 голосов
/ 02 ноября 2009

Работает:

String keyToSearch = AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY;
Object value = request.getSession().getAttribute(keyToSearch);

еще раз спасибо BalusC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...