javascript - Spring mvc + Thymeleaf : dealing with complex form

标签 javascript spring spring-mvc thymeleaf

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

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

我有两个约束:

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

现在,我并不是真的要问具体问题。我知道如何绕过 thymeleaf、spring @ModelAttribute 等。

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

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

  1. 使用 thymeleaf 渲染页面。每次需要向列表中添加新元素时,我都会使用 Ajax 在服务器上添加新元素并重新呈现特定片段。因此,使用我的@ModelAttribute 来回与服务器进行交互,只在最后保存。

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

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

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

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

你怎么看?

最佳答案

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

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

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

我将其用于添加单个字段以及添加嵌套表单。不问任何问题的技巧。

希望对您有所帮助。

关于javascript - Spring mvc + Thymeleaf : dealing with complex form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27768336/

相关文章:

javascript - 是否可以检查 adblock 是否阻止了另一个网站?

javascript - Mongoose 模型,为什么我需要使用 "new"? ( typescript )

javascript - 在 JavaScript 中解析 URL

java - 如何拥有一个复杂的对象作为@requestBody?

javascript - 或者选择器中的运算符

java - spring中application-Context.xml错误

spring - Jpa测试和Spring自动回滚

java - @PreAuthorize ("isAuthenticated()") 与 http.anyRequest().authenticated()

java - 警告 : No mapping found for HTTP request with URI [/leaveapp/] in DispatcherServlet with name 'spring'

java - web.xml 中的 contextConfigLocation 初始化参数