У меня проблемы с локализацией в калитке.
Это код:
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 в конструкторе приводит к сообщению об ошибке («... Это может иногда привести к неверному или не возвращенному локализованному ресурсу ...»).
Я хочу использовать PropertyModel для TextField, поскольку не хочу переводить строку, полученную из 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
}
Кто-нибудь видит проблему с этим решением? Может быть, я не думаю, что достаточно "wickety"?