我正在使用spring-mvc和thymeleaf开发一个内部工具。
此工具的一部分用于创建我们保存在数据库中的实体。 这个实体非常复杂;它包含许多属性和关系。其中一些关系包含列表和其他属性。
我有两个限制:
现在,我并没有真正要求具体问题。我知道我的方式绕着百里香,春天@ModelAttribute等等。
我的问题主要是你选择哪种策略或如何处理真正复杂的对象创建。
现在我可以看到3种方法:
使用thymeleaf渲染页面。每次需要将新元素添加到列表中时,我都使用Ajax在服务器上添加新元素并重新呈现特定片段。所以用我的@ModelAttribute在服务器上来回做,最后只保存。
使用百里香叶渲染基本页面。使用JavaScript创建html元素而不是提交给@ModelAttribute,我将我的表单序列化为JSON并将此JSON提交给服务器。 (客户端模型的种类)
使用百里香叶渲染基本页面。当我需要添加列表项时(确保我使用正确的名称=“”以适合我的Java表单对象),使用JavaScript动态创建html元素,并在最后提交整个内容。
我个人不确定1或2之间。 我觉得使用JSON比使用表单提交更容易处理复杂对象。此外,具有子对象和属性的输入值/字段可能非常讨厌。有这种语法 对我来说听起来不太好......
3可能有效,但弹簧数据绑定与子属性完成的方式在我的拙见中缺乏一些细节(第7.4.1节 - http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html)。
您怎么看?
答案 0 :(得分:4)
我个人使用Thymeleaf自己的动态字段管理来确保将对象和字段清晰地添加到对象中。
因此,我将推荐选项4:Thymeleaf的动态字段管理。
阅读http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#dynamic-fields。
我将它用于单个字段添加以及添加嵌套表单。诀窍没问题。
希望有所帮助。