Привязка динамического списка Spring

У меня типичный сценарий — я прочитал много статей по этому поводу, и динамическое добавление работает нормально. Я не мог получить элегантное решение для динамического удаления.

  1. Веб-форма имитирует пользователя. Пользователь может иметь имя и список телефонных номеров.

  2. phoneNumbers могут быть добавлены динамически с помощью Javascript на стороне клиента.

  3. Динамическое добавление phoneNumber в phoneNumbers не проблема - благодаря LazyList / AutoPopulatingList.

  4. Динамическое удаление - это своего рода проблема. Допустим, веб-форма была отображена с телефонными номерами как {1,3,5,7,9}. Используя Javascript, пользователь удаляет {1,3} без отправки формы. Теперь, когда форма отправлена, user.phoneNumbers должен автоматически иметь {5,7,9}.

Почему-то Spring MVC просто не содержит обновленного списка. Я использую контроллеры на основе аннотаций.

Гуру чем помочь?


person AAK    schedule 31.12.2009    source источник
comment
Spring MVC просто не содержит обновленного списка. Вы имеете в виду, что объект, созданный из вашей формы, не имеет удаленных номеров телефонов? Возможно, вы не удалили элемент формы из DOM должным образом.   -  person NA.    schedule 31.12.2009


Ответы (2)


я обычно делаю так

Для каждого удаленного объекта PhoneNumber я делаю запрос Ajax. PhoneNumberRepository заботится об удалении PhoneNumber.

@Repository
public class PhoneNumberRepositoryImpl implements PhoneNumberRepository {

    public void removePhoneNumber(PhoneNumber phoneNumber) {
        // code goes here
    }

}

Таким образом, ваш пользователь будет содержать только те номера телефонов, которые не были удалены.

Здесь вы можете увидеть, как я удаляю/добавляю свойство на основе коллекции. Он отлично работает!

с уважением,

person Arthur Ronald    schedule 31.12.2009
comment
Я использовал тот же подход AJAX в одном проекте. Отправил запрос на удаление ajax, и если он был успешным, я удалил строку с помощью вызовов DOM. - person NA.; 31.12.2009

Я вижу то же самое со списком автозаполнения.

Я использую вызов dojo ajax для 1) dojo.destroy dom с удаленным значением списка, затем 2) на сервере я делаю list.remove(index).

Значение в списке становится нулевым, но индекс и размер списка остаются того же размера (максимально возможный размер, т.е.: если 4 вызова ajax add, список останется размером 4, даже если один или несколько вызовов удаления завершенный).

Удалось ли вам понять, почему это произошло?

person blong824    schedule 28.02.2011