Spring 3 MVC: «один ко многим» в динамической форме (добавление/удаление при создании/обновлении)

Я ищу решение для управления отношением "один ко многим" в HTML-формес использованием jQuery. Я разрабатываю с помощью Spring, Spring MVCи Hibernate. Я нашел много треков в сети, но ни одного работающего полного примера.

Фон

У меня есть три сущности JPA:

Consult.java(1)

@Entity
@Table(name = "consult")
public class Consult

    private Integer id;
    private String label;
    private Set<ConsultTechno> consultTechnos;

    /* getters & setters */

}

ConsultTechno.java(2)

@Entity
@Table(name = "consult_techno")
public class ConsultTechno {

    private Integer id;
    private Techno techno;
    private Consult consult;
    private String level;

    /* getters & setters */

}

Techno.java(3 )

@Entity
@Table(name="techno")
public class Techno {

    private Integer id;
    private String label;
    private Set<ConsultTechno> consultTechnos;

    /* getters & setters */

}

Как показано, Consult (1) содержит nConsultTechnos (2), которые характеризуются уровнеми Techno (3).

Потребности

Используя HTML-форму, я хотел бы иметь Добавить техно-кнопку, которая динамически добавляет два поля в DOM:

<input type="text" name="consult.consultTechnos[].techno.id" />
<input type="text" name="consult.consultTechnos[].level" />

Конечно, каждый раз, когда пользователь нажимает на кнопка, эти два поля должны быть повторно добавлены и т. д. Я выбрал input type="text"для примера, но в конце полей будет два select.

Должны быть рассмотрены четыре типа операций:

  1. Добавлениедочернего объекта при созданиинового основного объекта
  2. Удалениедочернего объекта при созданииновый основной объект
  3. Добавитьдочерний объект при обновлениинового основного объекта
  4. Удалитьдочерний объект при обновлениинового основного объекта

Проблема

Эта часть макетауже работает, но при публикации формы мне не удается привязать динамически добавляемые поля к моему @ModelAttribute consult.

Вы хоть представляете, как выполнять такую ​​работу? Надеюсь, я выразился достаточно ясно...

Заранее спасибо :)

37
задан sp00m 6 December 2012 в 16:30
поделиться