2014-09-18 1 views
1

У меня возникают проблемы при перенаправлении на страницу с ошибкой, настроенную в web.xml (HTTP 500). Следующее исключение бросаютИсключение при перенаправлении на настроено (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. 

web.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 был сконфигурирован в лицах-config.xml.

<factory> 
    <exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory> 
</factory> 

Мои Facelets компоненты упакованы в банку файл (/ META-INF/ресурсы/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.

Окружающая среда:

  • Websphere 8.5.5.2
  • JSF 2.0 (MyFaces)
  • Primefaces 5.0
  • Omnifaces 1,7
+0

"Ну, другое исключение произошло во время рендеринга страницы ошибки 'Comum/Paginas/Эрро/erro500.xhtml'." кажется довольно ясным; ваш файл erro500.xhtml не может быть визуализирован и, вероятно, содержит ошибку. Похоже на опечатку, я ожидаю, что файл будет называться error500.xhtml. – Gimby

+0

«erro» является португальским для «ошибки». – BalusC

+0

@ Gimby это не опечатка, «erro» - бразильский португальский. – gfinotti

ответ

1

В <location> необходимо начать с /.

Так, например,

<location>comum/paginas/erro/erro500.xhtml</location> 

должен быть

<location>/comum/paginas/erro/erro500.xhtml</location> 

 Смежные вопросы

  • Нет связанных вопросов^_^