2013-04-06 72 views
0

我在JPA中使用JSF。我的錯誤處理是由全局異常處理程序完成的,如果發生任何錯誤,它將被觸發。在這個處理程序中,我只是執行一個重定向到我的error.xhtml。EJBException之後的JSF重定向

這工作正常,除了JPA處理程序。如果@EJB jpa處理程序產生一個錯誤,就我而言,我認爲它是EJB異常。在這種情況下,jsf重定向不起作用。

FacesContext.getCurrentInstance().getExternalContext().redirect("/error/"); 

但我沒有收到任何錯誤消息。我認爲這與一些生命週期問題有關,但我沒有任何線索如何解決它。我只是想實現一個全球性的錯誤使用JPA和JSF處理,這將總是在一個特定的錯誤頁面結束:(

回答

0

你捕獲的異常與一些JSF機制?

如果是的話,也許JSF懷念那些JPA異常你可以在試圖抓住通過web.xml中那些:

<error-page> 
     <exception-type>javax.faces.application.ViewExpiredException</exception-type> 
     <location>/error_redirect.html</location> 
</error-page> 

<error-page> 
    <error-code>404</error-code> 
    <location>/error_redirect.html</location> 
</error-page> 

<error-page> 
    <error-code>500</error-code> 
    <location>/error_redirect.html</location> 
</error-page> 

<error-page> 
     <exception-type>java.lang.Exception</exception-type> 
     <location>/error_redirect.html</location> 
</error-page> 

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

而在「error_redirect.html」你可以重定向到「/faces/error.xhtml」或任何

也許你也可以。直接將這些條目指向「/ error /」,但由於某種原因(我不記得)我用這個重定向的HTML :)

+0

謝謝你的回答。我遵循以下教程http://wmarkito.wordpress.com/2012/04/05/adding-global-exception-handling-using-jsf-2-x-exceptionhandler/ ..在這種情況下將調用異常處理程序但只有重定向不起作用。我認爲facesContext由於EJB而錯了嗎? – ManuPanu 2013-04-07 08:39:04