Spring-mvc Thymeleaf:处理复杂的形式

我正在使用spring-mvc和thymeleaf开发内部工具 .

此工具的一部分用于创建我们保存在数据库中的实体 . 这个实体非常复杂;它包含许多属性和关系 . 其中一些关系包含列表和其他属性 .

我有2个限制:

  • 单页 . 没有"wizard" .

  • 仅保存数据库中已完成的对象 .

现在,我并没有真正要求具体问题 . 我知道我的方式绕着百里香, Spring 天@ModelAttribute等 .

我的问题主要是你选择哪种策略或如何处理真正复杂的对象创建 .

现在我可以看到3种方法:

  • 用百里香叶渲染页面 . 每次需要将新元素添加到列表中时,我使用Ajax在服务器上添加新元素并重新呈现特定片段 . 所以使用我的@ModelAttribute在服务器上来回做,并且只在最后保存 .

  • 使用百里香叶渲染基本页面 . 使用JavaScript创建html元素而不是提交给@ModelAttribute,我将我的表单序列化为JSON并将此JSON提交给服务器 . (客户端模型的种类)

  • 使用百里香叶渲染基本页面 . 当我需要添加列表项时(确保我使用正确的名称=“”来适应我的Java表单对象)并使用JavaScript动态创建html元素并在最后提交整个事物 .

我个人在1或2之间不确定 . 我觉得使用JSON比使用表单提交更容易处理复杂对象 . 此外,具有子对象和属性的输入值/字段可能非常讨厌 . 拥有这种语法对我来说听起来不太好......

3可能可以工作,但 spring 数据绑定与子属性完成的方式在我的拙见(第7.4.1节 - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html)中缺少一些细节 .

你怎么看 ?

回答(1)

2 years ago

我个人使用Thymeleaf自己的动态字段管理来确保将对象和字段清晰地添加到对象中 .

因此,我将推荐选项4:Thymeleaf的动态现场管理 .

读一读http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields .

我将它用于单个字段添加以及添加嵌套表单 . 诀窍没有问题 .

希望有所帮助 .