2012-10-08 99 views
4

我正在處理用戶會話將在點擊鏈接時被替換的項目。由於頁眉,頁腳和內容(即整個頁面)中的所有數據都依賴於會話數據,因此必須重新加載整個頁面(所有子頁面)。我試過bookmarkablepagelink,但是我不能在這個鏈接上放置一個動作(改變會話)。我也試圖做一個鏈接,改變會話,然後點擊bookmarkablepagelink以編程方式,但我找不到一種方式點擊鏈接,而不使用JavaScript(這是在這個項目中沒有其他選擇)。刷新整個頁面檢票

任何好建議如何做到這一點?

+1

歡迎來到Stack Overflow!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-10-08 10:12:34

回答

5

在該鏈接的onClick方法,做對話重置,然後

setResponsePage(getPage()); 

和頁面應該很好地刷新。

+0

這不是必需的:除非通過setResponsePage(otherpage)明確告知,否則Wicket的默認設置是重新渲染當前頁面。 –

+0

如果它是一個ajax鏈接? –

+0

對於Ajax鏈接來說,確實如此。 –

5

解決你的問題是雙重的:你替換會話,可能最好通過

getSession().invalidateNow(); 

完成併發送重定向到書籤的網址。這可以用setResponsePage做,以及:

setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar")); 

這將發送302重定向到瀏覽器的書籤的網址和提供的參數,使servlet容器足夠的機會重置會話(基本上註銷用戶),而等待瀏覽器迴應。它也會觸發一個新的會話cookie(因爲前一個會話不再有效)。