Soufiane Elabed
Soufiane Elabed

Reputation: 61

How to handle forms mapped to more than one entity using Thymeleaf + Hibernate + Spring Boot?

I have a form in Thymeleaf that I want to link to two different entity to be persisted to the database using Hibernate

I have the following form using 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>

Let's supposea the first two fields are bound to entity1 and the third field to be bound to entity2 (not entity1) how should I do this?

Also, in the controller method, I have two DAO implementation for persisting them:

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

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

How to do this?

Upvotes: 0

Views: 49

Answers (1)

Alain Cruz
Alain Cruz

Reputation: 5097

You could create a custom object with the required information and mapped it using th:object.

New Class

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

Form

<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>

Controller

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

Upvotes: 1

Related Questions