在检票口有没有办法直接读取本地化属性?

In wicket is there a way to read localized properties directly?

除其他外,我在所有本地化的 .properties 文件中都有这两个具有不同值的属性:

...
StateShow=true
StateLabel=State
...

当用户选择一个国家/地区时,将调用 protected void onUpdate(AjaxRequestTarget target),并且该方法中的以下行将起作用:

...
getSession().setLocale(locale);
...
stateLabel.setDefaultModel(new StringResourceModel("StateLabel",target.getPage(),null));
...

也就是说在美国说State,在加拿大说Province,在日本说Prefecture等等。但是下面这行不行:

...
showState       = Boolean.getBoolean(new StringResourceModel("StateShow",       target.getPage(),null).getString());
...

也就是说,当正确的 .properties 文件显示 StateShow=true 时,showState 始终为 false。

是否可以准确访问未用作模型的本地化属性?

您的问题可能与 Wicket 无关,而是与您对 Boolean.getBoolean(String) 的使用有关,它试图找到具有给定名称的系统 属性(检查 javadoc)。

所以我假设您的 StringResourceModel 正确 returns 值 "true"。然后 Boolean.getBoolean(String) 试图找到一个名为 "true" 的系统 属性,它可能不存在,因此 returns false。

您可能想改用 Boolean.parseBoolean(String)