如何在Wicket 6.0中更改区域设置后刷新有状态页面?

时间:2012-09-30 08:32:22

标签: java internationalization wicket

我当前的项目允许用户更改每页上显示的所有页面的语言(通过单击一行标志图标之一)。以下是链接的实现:

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和所有标签的资源文件。

请注意使用:

setResponsePage(getPage().getClass());

setResponsePage(getPage().getClass(), getPage().getPageParameters());

对我来说不起作用,因为代码应该适用于所有页面,并且我有很多有状态的,不可书签的页面,其构造函数不遵循上述模式。

是否有人对Wicket 6.0有相同的经历?

编辑:似乎大多数Link的标签都受到了影响!此外,发生这种情况时,我没有看到任何异常。

EDIT2:由于svenmeier的要求,我做了更多的研究。所有未相应更新的链接构造如下:

BookmarkablePageLink<MyPage> link 
    = new BookmarkablePageLink<MyPage>(ID, MyPage.class, params);
link.setBody(new ResourceModel("My.Internationalized.Text"));

因此,似乎设置为主体模型的模型不会被链接组件更新。这就留下了为什么它与Wicket 1.5一起工作的问题。

1 个答案:

答案 0 :(得分:0)

此问题已在Wicket 6.1.0中修复!不幸的是,虽然WICKET-4738听起来很像我的问题,但我不能说这项工作有哪些修复。