Я видел несколько похожих вопросов, но мне еще предстоит найти ответ, который решает эту проблему. У меня есть форма Spring MVC, которая поддерживается объектом команды с примитивным свойством:
public class MyBean {
private int counter;
public int getCounter() {
return counter;
}
public void setCounter( int counter ) {
this.counter = counter;
}
}
В форме JSP у меня есть (сокращенно для ясности):
<form:form action="count.do">
<form:input id="counter" path="counter"/>
</form:form>
Теперь, пока в поле ввода "counter" есть действительное числовое значение, все работает как положено, но если поле пустое, я получаю ошибку проверки формы:
org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'MyBean' on field 'counter': rejected value []; codes [methodInvocation.MyBean.counter,methodInvocation.counter,methodInvocation.float,methodInvocation]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [MyBean.counter,counter]; arguments []; default message [counter]]; default message [Property 'counter' threw exception; nested exception is java.lang.IllegalArgumentException]
Я попытался создать собственный редактор свойств, чтобы принимать нулевые значения (инициализировать его в initBinder ()), но это работает только в том случае, если я создаю не примитивный набор средств доступа к оболочке:
binder.registerCustomEditor( Integer.class, new CustomNumberEditor(Integer.class, true) );
Итак, есть ли способ связать поле в форме с примитивным типом, не создавая не примитивных оболочек, и по-прежнему обрабатывать пустые значения (я хотел бы установить их в 0, а не в случае ошибки)? Если да, не могли бы вы опубликовать простой пример?
Большое спасибо,
Питер