我正在處理用戶會話將在點擊鏈接時被替換的項目。由於頁眉,頁腳和內容(即整個頁面)中的所有數據都依賴於會話數據,因此必須重新加載整個頁面(所有子頁面)。我試過bookmarkablepagelink,但是我不能在這個鏈接上放置一個動作(改變會話)。我也試圖做一個鏈接,改變會話,然後點擊bookmarkablepagelink以編程方式,但我找不到一種方式點擊鏈接,而不使用JavaScript(這是在這個項目中沒有其他選擇)。刷新整個頁面檢票
任何好建議如何做到這一點?
我正在處理用戶會話將在點擊鏈接時被替換的項目。由於頁眉,頁腳和內容(即整個頁面)中的所有數據都依賴於會話數據,因此必須重新加載整個頁面(所有子頁面)。我試過bookmarkablepagelink,但是我不能在這個鏈接上放置一個動作(改變會話)。我也試圖做一個鏈接,改變會話,然後點擊bookmarkablepagelink以編程方式,但我找不到一種方式點擊鏈接,而不使用JavaScript(這是在這個項目中沒有其他選擇)。刷新整個頁面檢票
任何好建議如何做到這一點?
在該鏈接的onClick
方法,做對話重置,然後
setResponsePage(getPage());
和頁面應該很好地刷新。
這不是必需的:除非通過setResponsePage(otherpage)明確告知,否則Wicket的默認設置是重新渲染當前頁面。 –
如果它是一個ajax鏈接? –
對於Ajax鏈接來說,確實如此。 –
解決你的問題是雙重的:你替換會話,可能最好通過
getSession().invalidateNow();
完成併發送重定向到書籤的網址。這可以用setResponsePage
做,以及:
setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar"));
這將發送302重定向到瀏覽器的書籤的網址和提供的參數,使servlet容器足夠的機會重置會話(基本上註銷用戶),而等待瀏覽器迴應。它也會觸發一個新的會話cookie(因爲前一個會話不再有效)。
歡迎來到Stack Overflow!我們鼓勵你[研究你的問題](http://stackoverflow.com/questions/how-to-ask)。如果你已經[嘗試了某些東西](http://whathaveyoutried.com/),請將其添加到問題中 - 如果沒有,請先研究並嘗試您的問題,然後再回來。 – 2012-10-08 10:12:34