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