在检票口有没有办法直接读取本地化属性?
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)
。
除其他外,我在所有本地化的 .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)
。