Привязка пустых значений к числовым полям в Play Framework 2 (Java)
У меня есть формы, в которых я хочу оставить некоторые числовые поля пустыми, но я получаю ошибки "Недопустимое значение" от Form.bindFromRequest()
, Это кажется общим требованием, но я не могу найти документацию по этому вопросу после нескольких часов поиска. Я все еще надеюсь, что пропустил что-то очевидное, хотя!
Я немного покопался и обнаружил, что Play использует Spring DataBinder
класс, чтобы сделать фактическую привязку. Этот класс действительно сложный и позволил бы мне устанавливать пользовательские связыватели для моих полей, и если бы я использовал Spring, я мог бы просто добавить @InitBinder
метод моего контроллера, чтобы настроить связыватель именно так, как я хочу, используя CustomNumberEditor
, Тем не менее, кажется, что Play Framework Form
Объект не разрешает доступ к DataBinder, кроме установки разрешенных полей. Таким образом, связыватель пытается преобразовать пустую строку в длинную, что дает NumberFormatException
:
Failed to convert property value of type 'java.lang.String' to required type 'long'
for property 'unitPriceExVAT';
nested exception is java.lang.NumberFormatException: For input string: ""
Итак, есть ли какой-то другой способ получить связующее, чтобы пустые числовые поля?
1 ответ
Объявите ваши поля как Long
вместо long
примитивный тип и пустые значения будут рассматриваться как null
,