Вопрос

У меня есть форма, и я зарегистрировал 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top