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

时间:2015-01-04 17:34:41

标签: javascript spring spring-mvc thymeleaf

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

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

我有两个限制:

  1. 单页。没有“巫师”。
  2. 仅在数据库中保存已完成的对象。
  3. 现在,我并没有真正要求具体问题。我知道我的方式绕着百里香,春天@ModelAttribute等等。

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

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

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

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

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

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

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

      您怎么看?

1 个答案:

答案 0 :(得分:4)

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

因此,我将推荐选项4:Thymeleaf的动态字段管理。

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

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

希望有所帮助。