Настроить страницу ошибок Facelets - PullRequest
2 голосов
/ 19 марта 2011

У меня есть веб-приложение Facelets (JSF 1.2 (myfaces)), и я хочу настроить свою страницу с ошибкой, что кажется естественным, когда приложение становится более зрелым.Я очень запутался в этом процессе.

Я нашел следующее:

  • Я не нашел способа настроить страницу ошибок Facelets.Я не нашел, где находится шаблон.Я нашел решения с переопределением ViewHandler, что бы сделать sendRedirect ().Я думаю, что это должно быть выполнено без написания кода, особенно ViewHandler.

  • Я нашел способ отключить обработку ошибок Facelets и использовать myFaces ':

код:

<context-param>
    <param-name>facelets.DEVELOPMENT</param-name>
    <param-value>false</param-value>
</context-param>
<context-param>
    <param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
    <param-value>true</param-value>
</context-param>
<context-param>
    <param-name>org.apache.myfaces.ERROR_TEMPLATE_RESOURCE</param-name>
    <param-value>/pages/public/errorPage.jsf</param-value>
</context-param>

К сожалению, я не могу заставить myFaces найти страницу JSF.Мне нужно использовать страницу jsf, потому что я хочу использовать макет сайта, который разделен на несколько шаблонов.Источник: http://wiki.apache.org/myfaces/Handling_Server_Errors

  • Я попробовал решение для томагавка:

web.xml:

<context-param>
    <param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>org.apache.myfaces.ERROR_HANDLER</param-name>
    <param-value>org.apache.myfaces.tomahawk.util.ErrorRedirectJSFPageHandler</param-value>
</context-param>

face-config.xml:

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>java.lang.Throwable</from-outcome>
        <to-view-id>/pages/public/errorPage.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

Источник: http://wiki.apache.org/myfaces/Handling_Server_Errors

  • Я обнаружил, что могу использовать обработку ошибок контейнера через <error-page> в web.xml.Я успешно переадресован на страницу ошибки jsf.Здесь проблема в том, что я не могу отобразить исключение - я не знаю, как.

Обновление : я узнал, как - с ManagedBean:

public class ErrorDisplayBean {
    public String getStackTrace() {
        FacesContext context = FacesContext.getCurrentInstance();
        Map requestMap = context.getExternalContext().getRequestMap();
        Throwable ex = (Throwable) requestMap.get("javax.servlet.error.exception");
        ...
    }
}

см. http://wiki.apache.org/myfaces/Handling_Server_Errors для остальной части кода.

Чего я хочу достичь : я хочу использовать механизм обработки ошибок Facelets без написания кода и бытьвозможность отобразить исключение на странице JSF.Если это невозможно, я бы хотел снова использовать обработку ошибок myFaces с отображением в Исключении.Я думаю, что один из них должен быть возможным.

1 Ответ

3 голосов
/ 29 февраля 2012

Я думаю, что вы все еще можете настроить через ваш web.xml:

 <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.xhtml</location>
 </error-page>

Что можно использовать и для кодов ошибок.

...