Настроить страницу ошибки Facelets

У меня есть веб-приложение 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>

Faces-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 с отображением в исключении. Я думаю, что одно из них должно быть возможным.


person mist    schedule 19.03.2011    source источник


Ответы (1)


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

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

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

person thejartender    schedule 29.02.2012
comment
Я сейчас далеко от этого проекта и не могу (не хочу) тестировать, но, поскольку вы потратили время, чтобы ответить на вопрос, вы получаете награду :) - person mist; 06.03.2012