我在使用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