Spring-mvc + Thymeleaf:处理复杂表单

rgu*_*tte 3 javascript spring spring-mvc thymeleaf

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

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

我有两个限制:

  1. 单页。没有“巫师”。
  2. 只在数据库中保存一个完成的对象。

现在,我并不是真的要问一个具体的问题。我了解百里香叶、弹簧 @ModelAttribute 等。

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

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

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

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

  3. 使用 thymeleaf 渲染基本页面。当我需要添加列表项时,使用 JavaScript 动态创建 html 元素(确保我输入了正确的 name="" 以适合我的 Java 表单对象)并在最后提交整个内容。

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

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

你怎么认为 ?

Aes*_*eir 5

我个人使用 Thymeleaf 自己的动态字段管理来确保对象和字段的干净添加到对象。

所以我会推荐选项 4:Thymeleaf 的动态字段管理。

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

我将它用于单个字段添加以及嵌套表单的添加。不问任何问题的伎俩。

希望有帮助。