обработка сообщений об исключениях в JSF - PullRequest
0 голосов
/ 17 июня 2011

У меня есть фильтр сервлетов, который контролирует, нормально ли запускается мое веб-приложение;

public void doFilter(ServletRequest aReq, ServletResponse aResponse, FilterChain aChain) throws IOException, ServletException
    {
        HttpServletRequest request = (HttpServletRequest) aReq;
        HttpServletResponse response = (HttpServletResponse) aResponse;


        if(!myContext.isSystemReady())
        {
            // SHOW AN ERROR PAGE WITH SOME EXCEPTION MESSAGE
        }

        aChain.doFilter(request, aResponse);
        return;

    }

, как лучше всего показывать сообщения об ошибках в этом стиле?

  • если я использую

    request.setAttribute ("errMsj", "Система не готова. Обратитесь к своему веб-администратору");

как я могу показать это в моемСтраница JSF?

ERROR !<br />
detailed message is: <h:outputText value="errMsj HERE!"></h:outputText>
  • или я должен использовать ststusbean для отображения сообщений об ошибках?в это время я должен получить доступ к FaceContext в фильтре и написать сообщение об ошибке в этот компонент.Может ли быть проблема с этим?

  • или какие-либо лучшие идеи?

(используя jsf2.0)

1 Ответ

1 голос
/ 17 июня 2011

Вы можете перенаправить на определенную страницу ошибки, определив элемент web-app/error-page в вашем web.xml:

<error-page>
  <error-code>500</error-code>
  <location>/error.xhtml</location>
</error-page>

Проверьте схему , есть больше функций (например, реагирование на определенные классы исключений).

Мне лично, я бы просто выбросил исключение в doFilter (иметь полную трассировку стека исключений может быть критично). Позднее исключение можно получить как #{requestScope['javax.servlet.error.exception']}, если вы хотите, чтобы страница ошибки была страницей JSF.

...