Можно ли связать / преобразовать элементы в списке формы в определенный тип в приложении Spring Web MVC? - PullRequest
1 голос
/ 15 июля 2010

Я создаю приложение Spring MVC с помощью Spring 3.0.3. У меня привязка данных в моей форме работает нормально, но одно из полей формы - это список элементов. Гипотетически говоря, мой объект формы выглядит так:

public class MyForm {

    private String name;
    private List<String> items;

    public String getName() {
        return name;
    }
    public void setName( String value ) {
        name = value;
    }

    public List<String> getItems() {
        return items;
    }
    public void setItems( List<String> value ) {
        items = value;
    }
}

Допустим, форма обрабатывается через GET со строкой запроса, которая выглядит следующим образом:

"/url?name=GroupName&items=Item-1&items=Item-2&items=Item-3"

На данный момент свойство items моего MyForm объекта просто отлично связывается со списком значений String. Что мне интересно, так это то, что я все еще смогу добиться привязки данных, если бы изменил тип списка элементов на что-то более конкретное, например:

private List<MyListItem> items;

1 Ответ

1 голос
/ 15 июля 2010

Этого можно добиться, внедрив собственный настраиваемый тип java.beans.PropertyEditor для MyListItem и зарегистрировав его. В этом редакторе пользовательских свойств вы сможете определить, как свойство строки будет преобразовано в ваш объект MyListItem и наоборот, путем реализации методов getAsText() и setAsText(). Затем Spring будет использовать ваши пользовательские PropertyEditor при привязке значений к вашей форме и сможет преобразовывать экземпляры MyListItem объектов из строк в данных POST / GET.

См. эту ссылку из документации Spring для получения дополнительной информации по этому вопросу. Смотрите раздел 5.4.2.1

Также обратите внимание, что этот подход не только работает для преобразования между строками и вашими собственными типами, но также полезен для внесения любых изменений в данные базовых типов Java в то время, когда данные формы связаны с вашими компонентами или читается с них. Например, применение экранирования HTML к тексту строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...