Java 如何在Wicket 6.0中更改区域设置后刷新有状态页面?
“我的当前项目”允许用户通过单击一行标志图标中的一个来更改每页上显示的所有页面的语言。以下是链接的实现:Java 如何在Wicket 6.0中更改区域设置后刷新有状态页面?,java,internationalization,wicket,Java,Internationalization,Wicket,“我的当前项目”允许用户通过单击一行标志图标中的一个来更改每页上显示的所有页面的语言。以下是链接的实现: Link<Locale> changeLocaleLink = new Link<Locale>("link", locale) { @Override public void onClick() { Locale newLocale = getModelObject(); // nothing esoteric don
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 6.0有过同样的体验
编辑:似乎大多数,但不是所有的链接标签都会受到影响!此外,我没有看到发生这种情况时抛出任何异常
编辑2:由于斯文梅尔的要求,我做了更多的研究。所有未相应更新的链接的构造如下:
BookmarkablePageLink<MyPage> link
= new BookmarkablePageLink<MyPage>(ID, MyPage.class, params);
link.setBody(new ResourceModel("My.Internationalized.Text"));
因此,设置为实体模型的模型似乎没有被链接组件更新。这就留下了一个问题:为什么Wicket 1.5会起作用。Wicket 6.1.0已经解决了这个问题!不幸的是,我不能说是哪个修复程序起了作用,尽管听起来很像我的问题。告诉我们您是如何构建这些链接的,我已经做了更多的研究,并添加了您要求的信息。
setResponsePage(getPage().getClass(), getPage().getPageParameters());
BookmarkablePageLink<MyPage> link
= new BookmarkablePageLink<MyPage>(ID, MyPage.class, params);
link.setBody(new ResourceModel("My.Internationalized.Text"));