Применить редактор свойств к объекту в модели

У меня есть форма, и я зарегистрировал 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>
Другие вопросы по тегам