У меня возникают проблемы при перенаправлении на страницу ошибок, настроенную в web.xml (HTTP 500). Выбрасывается следующее исключение
java.lang.NullPointerException at java.lang.StringBuilder.<init>(StringBuilder.java:77)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.getRenderedViewId(FaceletViewDeclarationLanguage.java:1674)
FullAjaxExceptionHandler: Well, another exception occurred during rendering error page 'comum/paginas/erro/erro500.xhtml'. Trying to render a hardcoded error page now.
веб.xml
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>comum/paginas/erro/sessaoExpirada.xhtml</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>comum/paginas/erro/erro500.xhtml</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>comum/paginas/erro/erro500.xhtml</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>comum/paginas/erro/erro403.xhtml</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>comum/paginas/erro/erro404.xhtml</location>
</error-page>
FullAjaxExceptionHandlerFactory был настроен в файлеfaces-config.xml.
<factory>
<exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory>
</factory>
Компоненты моих лицевых панелей упакованы в файл jar (/META-INF/resources/comum/paginas/erro). ResourceResolver
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>company.FaceletsResourceResolver</param-value>
</context-param>
public class FaceletsResourceResolver extends ResourceResolver {
private ResourceResolver parent;
private String basePath;
public FaceletsResourceResolver(ResourceResolver parent) {
this.parent = parent;
this.basePath = "/META-INF/resources";
}
@Override
public URL resolveUrl(String path) {
URL url = parent.resolveUrl(path); // Resolves from WAR.
if (url == null) {
url = getClass().getResource(basePath + path); // Resolves from JAR.
}
return url;
}
}
Когда компоненты Facelets не были упакованы в банку, редирект работал правильно. Остальные страницы ошибок (403, 404, sessionExpired) работают без проблем. Ошибка возникает только с ошибкой HTTP 500.
Окружающая обстановка:
- Вебсфера 8.5.5.2
- JSF 2.0 (мои лица)
- Праймфейс 5.0
- Омнифейс 1.7