Применить редактор свойств для возражения в модели
-
12-10-2019 - |
Вопрос
У меня есть форма, и я зарегистрировал Customnumbereditor для номеров с плавающей запятой моих объектов.
@InitBinder
public void initBinder(WebDataBinder binder){
NumberFormat numberFormat = NumberFormat.getInstance();
binder.registerCustomEditor(Float.class, new CustomNumberEditor(Float.class, numberFormat, true));
}
У меня есть метод контроллера AJAX для обновления раздела формы (он просто возвращает обновленный фрагмент HTML), поэтому в контроллере я делаю что -то вроде этого:
public String retrieveFormSection(@PathVariable("id") String id, Model model) {
...
model.addAttribute("myObject", myObject);
return "myJSP";
}
В этом JSP я просто хочу распечатать некоторые данные, используя редакторы:
<input type="text" value="${myObject.myNumber}"/>
Поскольку MyObject не помещается в качестве объекта @ModelAtTribute, редактор не используется для него. Есть ли способ зарегистрировать редакторы на поля в объектах, которые я добавляю в модель? Возможно, редакторы не должны использоваться для этого, потому что таким образом я использую только метод getastext () редактора, а не в setastext (). Должен ли я использовать еще одну весеннюю функцию для этого?
Спасибо.
Решение
Вы можете использовать <spring:bind>
Чтобы отобразить значение, обработанное PropertyEditor
:
<spring:bind path = "myObject.myNumber">
<input type="text" value="${status.displayValue}"/>
</spring:bind>
Однако, если вам нужно отобразить его в поле ввода, вы также можете использовать <form:input>
, как и в случае с обычными формами. Если вы не хотите, чтобы это было в <form>
, вы можете использовать <spring:nestedPath>
вместо <form:form>
:
<form:form modelAttribute = "myObject">
<form:input path = "myNumber" />
</form:form>
<spring:nestedPath path = "myObject">
<form:input path = "myNumber" />
</spring:nestedPath>