Применить редактор свойств к объекту в модели - PullRequest
0 голосов
/ 18 января 2011

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

2 голосов
/ 18 января 2011

Вы можете использовать <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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...