我正在使用OmniFaces FullAjaxExceptionHandler來顯示錯誤頁面。錯誤頁面顯示正確,但我遇到了這些頁面樣式的問題。h:使用FullAjaxExceptionHandler時不會重新顯示正文
我的應用程序正在使用一個模板,它具有在body元素上定義的CSS類。這些類爲正常的和錯誤頁面是不同的:
正常頁:
<h:body styleClass="main-body layout-compact">
錯誤頁面:
當FullAjaxExceptionHandler處理異常,執行到錯誤頁面前進(基於web.xml
中的<error-page>
機制)。很明顯,這並不會改變<h:body>
標記,因爲在檢查HTML輸出時,我可以看到<body>
標記仍然包含來自普通頁面(而不是錯誤頁面的類)的CSS類。
看來,原來的<h:body>
的內容被替換爲錯誤頁面的內容<h:body>
,而不是替換完整的<h:body>
。我不知道這是否是默認的JSF/FullAjaxExceptionHandler行爲。
有什麼辦法讓<h:body>
呈現正確的CSS類?移動CSS類遠離<h:body>
不是一種選擇。
當你做了一個轉發錯誤頁面,那麼它不是一個ajax調用,所以你不能做退回。相反,您正在加載一個新的全新錯誤頁面。請檢查前進是否正確完成。如果是這樣,您將在body標籤上應用正確的CSS。 – OTM
前進是由FullAjaxExceptionHandler正確完成的,我沒有自己做前進。顯示錯誤頁面(在相同的url下),並且整個
內容已更改。然而,標籤仍然具有上一頁中的CSS類。所以看起來身體標記不會被重新渲染,而只是其內容。我不知道這是否是標準的JSF行爲。 – baraskae