Spring MVC jsp список объектов - PullRequest
1 голос
/ 30 марта 2010

Я использую Spring MVC 3.0 и JSP. У меня есть объект:

public class ObjectWrapper {
    private List<SomeTO> someTOs;
}

Класс SomeTO содержит поля типа name и id. Как создать форму, которую пользователь может динамически добавлять в список SomeTO? Я гуглил и нашел что-то про spring:bind, но для меня неясно.

1 Ответ

2 голосов
/ 30 марта 2010

В методе поддержки формы установите список в LazyList, который является частью библиотеки коллекции Apache Commons.

Factory notificationFactory = new Factory() {
       public Object create() {
            SomeTO rtVl = new SomeTO();
            return rtVl;
        }
 };
myFormBacking.setSomeTOs(LazyList.decorate(myFormBacking.getSomeTOs));

Затем в вашей форме, когда вы отправляете данные на сервер, вы можете сделать это следующим образом

<input name="someTOs[0].name" value="" />

А если вы используете

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

тогда вы можете просто пойти.

<form:input path="someTOs[0].name" />

Перед размещением данных на сервере, чтобы упростить сокращение, установите количество элементов в коллекции. Поэтому, если пользователь добавил 5 TO, отправьте это значение длины в форме сообщения.

На сервере сейчас, вы должны удалить список, прежде чем сохранить его. Вот функция обрезки

public List<SomeTOs> pruneList(List<SomeTOs> unpruned,int expectedLength){
    List<SomeTOs> rtVl = new ArrayList<SomeTOs>();
    for (int i = 0; i < unpruned.length && expectedLength; ++i){
         rtVl.add(unpruned.get(i);
    }
    return rtVl;
}

Вот использование функции обрезки при отправке (перед сохранением)

wrapper.setSomeTOs(pruneList(wrapper.getSomeTOs(),Integer.parseInt(request.getParameter("expectedLength)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...