【问题标题】:How to handle forms mapped to more than one entity using Thymeleaf + Hibernate + Spring Boot?如何使用 Thymeleaf + Hibernate + Spring Boot 处理映射到多个实体的表单?
【发布时间】:2019-06-14 06:32:13
【问题描述】:

我在 Thymeleaf 中有一个表单,我想链接到两个不同的实体以使用 Hibernate 持久化到数据库中

我有以下使用 Thymeleaf 的表格:

<form th:action="@{/app/handleForm}" th:object="${entity1}" 
method="post">
    <input type="text"  th:field="*{field1}" />      
<input type="text" th:field="*{field2}" />
   <input type="text" th:field="*{field3}" />
</form>

假设前两个字段绑定到 entity1,第三个字段绑定到 entity2(不是 entity1),我该怎么做?

另外,在控制器方法中,我有两个 DAO 实现来持久化它们:

@PostMapping("app/handleForm")
public String  RHTraiterDemande(Model m, Entity1 entity1, Entity2 
entity2) {

    entity1Service.add(entity1);
            entity2Service.add(entity2);
    return "showResults";       
   }

如何做到这一点?

【问题讨论】:

    标签: spring hibernate spring-boot spring-mvc thymeleaf


    【解决方案1】:

    您可以创建一个包含所需信息的自定义对象,并使用th:object 对其进行映射。

    新课程

    public class MyClass {
        private Entity1 entity1;
        private Entity2 entity2;
        // Getters and setters.
    }
    

    表格

    <form th:action="@{/app/handleForm}" th:object="${myClass}" 
    method="post">
       <input type="text" th:field="*{entity1.field1}"/>      
       <input type="text" th:field="*{entity1.field2}"/>
       <input type="text" th:field="*{entity2.field3}"/>
    </form>
    

    控制器

    @PostMapping("app/handleForm")
    public String RHTraiterDemande(Model m, MyClass myClass) {
        entity1Service.add(myClass.entity1);
        entity2Service.add(myClass.entity2);
        return "showResults";       
    }
    

    【讨论】:

    • ^ - 据我所知,这是唯一的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-01-07
    相关资源
    最近更新 更多