2012-09-30 58 views
1

我當前的項目允許用戶更改所有頁面在每個頁面上顯示的語言(通過單擊一行標誌圖標中的一行)。這裏是鏈接的實施:如何在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可以工作的問題。

+0

向我們展示如何構建這些鏈接, – svenmeier

+0

我已經完成了更多研究並添加了您請求的信息。 – r3nj1

回答

0

該問題已在Wicket 6.1.0中修復!不幸的是,我不能說哪個修復工作,儘管WICKET-4738聽起來很像我的問題。

相關問題