弹簧-MVC + 百里香叶:处理复杂的形式

Spring-mvc + Thymeleaf: dealing with complex form

本文关键字:复杂 处理 -MVC 百里香 弹簧      更新时间:2023-09-26

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

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

我有 2 个约束:

  1. 单页。没有"向导"。
  2. 仅将已完成的对象保存在数据库中。

现在,我并不是真的在问一个具体的问题。我知道我的方式在百里香叶,春@ModelAttribute等。

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

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

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

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

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

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

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

你觉得怎么样?

就我个人而言,我使用 Thymeleaf 自己的动态字段管理来确保将对象和字段干净地添加到对象中。

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

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

我将其用于单字段添加以及嵌套表单的添加。诀窍不问问题。

希望有帮助。