Применить редактор свойств к объекту в модели
У меня есть форма, и я зарегистрировал 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 для этого?
Благодарю.
1 ответ
Ты можешь использовать <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>