2015-01-04 3 views
2

Я работаю над внутренним инструментом, использующим spring-mvc и thymeleaf.Spring-mvc + Thymeleaf: работа с сложной формой

Раздел этого инструмента используется для создания объекта, который мы сохраняем в базе данных. Это сущность довольно сложна; он содержит много свойств и отношений. Некоторые из этих отношений содержат список и другие свойства.

У меня есть 2 ограничения:

  1. одной странице. Нет «мастера».
  2. Сохранять только завершенный объект в базе данных.

Теперь я не прошу конкретной проблемы. Я знаю свой путь вокруг тимелеафа, весны @ModelAttribute и т. Д.

Мой вопрос в основном состоит в том, какую стратегию вы выбираете или как бороться с действительно сложным созданием объекта.

Теперь я вижу 3 способа сделать это:

  1. Rendering страницу с thymeleaf. Каждый раз, когда новый элемент нужно добавить в список, я использую Ajax для добавления нового элемента на сервер и повторного получения определенного фрагмента. Так что делайте это на сервере с моим @ModelAttribute и сохраняйте только в конце.

  2. Оказание базовой страницы с тимелем. Используя JavaScript для создания элементов html и вместо отправки в @ModelAttribute, я сериализую свою форму в JSON и отправляю этот JSON на сервер. (вид клиентской модели)

  3. Оказание базовой страницы с тимелеафом. Создайте элемент html динамически с помощью JavaScript, когда мне нужно добавить элемент списка (будучи уверенным, что я помещаю надлежащее имя = "" в соответствие с моим объектом Java-формы) и отправьте все это в конце.

Я лично не уверен между 1 или 2. я чувствую дело со сложным объектом является гораздо проще с помощью JSON, чем формы представления. Кроме того, входное значение/поле с дополнительным объектом и свойством может быть довольно неприятным. Имея такой синтаксис не звучит здорово для меня ...

3, вероятно, может работать, но данные способ пружинные связывание осуществляется с дополнительным свойством не хватает какой-то детали по моему скромному мнению (раздел 7.4.1 - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html).

Как вы думаете?

+0

Помог ли ответ? – Aeseir

ответ

2

Лично я использую собственное динамическое управление Thymeleaf для обеспечения чистого добавления объектов и полей к объекту.

Поэтому я порекомендую вариант 4: Управление динамическим полем от Thymeleaf.

Считать http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields.

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

Надеюсь, что это поможет.

Смежные вопросы