我當前的項目允許用戶更改所有頁面在每個頁面上顯示的語言(通過單擊一行標誌圖標中的一行)。這裏是鏈接的實施:如何在Wicket 6.0中更改語言環境後刷新有狀態頁面?
Link<Locale> changeLocaleLink = new Link<Locale>("link", locale) {
@Override
public void onClick() {
Locale newLocale = getModelObject();
// nothing esoteric done with setLocale(...) in MySession
MySession session = MySession.get();
session.setLocale(newLocale);
if (session.isSignedIn()) {
// set the new locale in the user's preferences
}
setResponsePage(getPage());
}
};
隨着Wicket 1.5,這工作沒有問題。頁面重新加載並且所有標籤都相應地更改。但是,由於我已將代碼遷移到Wicket 6.0,因此只有一些(看似隨機的)標籤在更改語言環境時發生了變化,所以我不知道是什麼原因導致此問題。
我爲我的所有標籤使用(Wicket-)標準ResourceModel
s和資源文件。
請注意,使用:
setResponsePage(getPage().getClass());
和
setResponsePage(getPage().getClass(), getPage().getPageParameters());
不適合我的工作,因爲代碼應該爲所有網頁工作,我有好幾個狀態,非可收藏其構造函數不遵循上述模式的頁面。
有沒有人體驗過Wicket 6.0?
編輯:看起來大多數,但不是所有Link
s標籤都受到影響!另外,當發生這種情況時,我看不到任何異常。
EDIT2:由於svenmeier的要求,我做了更多的研究。未相應地更新所有鏈接的結構如下:
BookmarkablePageLink<MyPage> link
= new BookmarkablePageLink<MyPage>(ID, MyPage.class, params);
link.setBody(new ResourceModel("My.Internationalized.Text"));
如此看來,被設定爲人體模型的模型不是通過鏈接組件更新。這就留下了爲什麼Wicket 1.5可以工作的問題。
向我們展示如何構建這些鏈接, – svenmeier
我已經完成了更多研究並添加了您請求的信息。 – r3nj1