我有以下web.xml中定義:錯誤頁面被嵌入在部分地呈現JSF頁
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/shared/errors/DefaultErrorPage.xhtml</location>
</error-page>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/shared/errors/ViewExpired.xhtml</location>
</error-page>
我還使用了從FullAjaxExceptionHandler Omnifaces faces-config.xml中:
<factory>
<exception-handler-factory>
org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory
</exception-handler-factory>
</factory>
的FullAjaxExceptionHandler工作正常進行Ajax調用,但是當我直接打一個網頁,並有一個錯誤,它開始渲染我試圖去的網頁,但它並沒有完成,然後在web.xml中定義的錯誤頁面被渲染,這導致錯誤頁面被嵌入d在部分呈現的頁面之後。
(我使用Glassfish的3.1.1具有鑽嘴魚科JSF 2.1.3)編輯:現在使用的Glassfish 3.1.2.2和JSF 2.1.11
編輯:發現了以下內容: 所在的頁面錯誤正在發生的是使用模板(<ui:composition template="/shared/shared/commonLayout.xhtml">
)如果我改變它,使頁面不再使用模板,然後只需添加模板中的所有代碼,然後它可以正常工作。
這很奇怪。爲了排除這個和那個,JSF項目階段是否設置爲'Development'? – BalusC 2012-08-02 02:34:28
是的,它被設置爲開發。 – jc12 2012-08-02 15:03:01
我試着將它改爲Production,但我仍然得到相同的結果。我不確定你的意思是「排除一個和其他」。如果我使用FullAjaxExceptionHandlerFactory進行ajax調用,是否還需要一個用於非Ajax調用的ExceptionHandlerFactory? – jc12 2012-08-02 15:21:16