2014-02-20 73 views
0

我需要在處理Action或Event階段(因爲我不希望整個頁面或任何Portlet被刷新)後執行renderProcessing(doView方法)。就像ajax資源獲取不會導致刷新所有portlet(我的意思是serveResource方法)。我們可以在ProcessAction或ProcessEvent的末尾使用「destroy()」方法來防止執行renderPhase。我在我的portlet中廣泛使用MVCPortlet框架和事件ipc。謝謝你的幫助。執行沒有渲染階段的portlet事件階段

+0

不,你不能,你只能覆蓋destroy方法,這個方法應該被容器調用,爲什麼你不使用ajax和serveResource? –

+0

因爲我的portlet接收和發送事件給其他portlet來運行多級進程,我不想讓他們刷新每個事件處理中的頁面。也許我應該重寫doView進程來忽略某些特定的renderRequset基於某些條件或參數(但是如何?) – Behnam

回答

0

正如Georgy Gobozov在評論中所述:您的問題的答案是「否」。

如果您使用的是標準的portlet請求處理,並依靠事件處理,你一定會重新加載整個頁面。沒有什麼能夠阻止您實現自定義事件處理(例如,通過瀏覽器上的JS,通過業務層等),但不幸的是,您不得不這樣做。

當您開始原始請求時,例如通過一個動作處理器,頁面已經開始重新加載(從瀏覽器的角度來看)。任何取消處理服務器端的嘗試都將導致流中斷,瀏覽器在頁面上發出錯誤信息(例如「無法加載」:結果必須帶有HTTP狀態 - 並且很可能是錯誤代碼(例如50x),或者它必須包含整個頁面的HTML。