在我的所有本地化.properties文件中,我有两个具有不同值的属性:
...
StateShow=true
StateLabel=State
...
当用户选择一个国家/地区受保护的void onUpdate(AjaxRequestTarget目标)被调用时,该方法中的以下行有效:
...
getSession().setLocale(locale);
...
stateLabel.setDefaultModel(new StringResourceModel("StateLabel",target.getPage(),null));
...
也就是说,在美国它说国家,在加拿大它说省,在日本它说州,等等。但是以下行不起作用:
...
showState = Boolean.getBoolean(new StringResourceModel("StateShow", target.getPage(),null).getString());
...
也就是说,当正确的.properties文件说StateShow = true时,showState始终为false。
是否有准确访问未用作模型的本地化属性?
答案 0 :(得分:1)
您的问题可能与Wicket无关,而是与Boolean.getBoolean(String)
的使用有关,它试图找到具有给定名称的系统属性(检查javadoc)。
所以我假设您的StringResourceModel
正确返回值“true”。然后Boolean.getBoolean(String)
尝试查找名为“true”的系统属性,该属性可能不存在,因此返回false。
您可能希望改为使用Boolean.parseBoolean(String)
。