我在使用wicket进行本地化时遇到了一些问题。在Wicket的构造函数中调用getString()会给出错误
这是代码:
private String displayString;
private TextField<String> myTextField;
public myPage(DomainObject domainObject){
if(domainObject != null)
displayString = domainObject.getDisplayString();
myTextField = new TextField<String>("myTextField", new PropertyModel<String>(this, "displayString"));
if(Strings.isEmpty(displayString))
displayString = getString("mandatory"); //<- error message here
}
问题是调用的getString在一条错误消息的构造结果(” ......这有时会导致一个无效的或没有本地化资源返回... “)。 我想为TextField使用PropertyModel,因为我不想翻译从domainObject.getDisplayString()获取的字符串。我不希望在TextField中所做的更改直接影响domainObject中的值。 有可能摆脱错误消息通过做这个代替的getString的:
if(Strings.isEmpty(displayString))
displayString = new ResourceModel("mandatory").getObject(); //<- no error message
据我了解,这是同样的事情,调用的getString(你只是谬以千里的警告,但问题仍然存在) 。 我想到了一个解决办法是这样的:
@Override
protected void onAfterRender() {
super.onAfterRender();
if(Strings.isEmpty(displayString))
displayString = getString("mandatory"); //<- no error message
}
有谁看到一个问题,这个解决方案?也许我不是在想“够疯狂”吗?
正如我添加到答案中的链接所示,onInitialize()自1.4起可用,而不是1.5。 – biziclop 2012-02-03 00:13:24
@biziclop感谢您指出。我总是相信[Wicket 1.5迁移说明](https://cwiki.apache.org/WICKET/migration-to-wicket-15.html#MigrationtoWicket1.5-ComponentInitializationComponent%2523onInitialize)关于此... – Nicktar 2012-02-03 11:18:34