Thymeleaf表单用于存储Set <object>的输入文本

时间:2016-08-21 14:05:25

标签: spring hibernate thymeleaf

我有一个@OneToMany关联实体:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "house", fetch = FetchType.EAGER)
private Set<Room> rooms;

然后在Thymeleaf中我想填充四个输入文本字段,以便将四个房间保存到DB中。

问题是如何通过Hibernate将这些字段填充到正确的数据库中?

<tr th:each="i,iterStat : ${#numbers.sequence( 1, 4)}">    
  <td>
    <input type="text" th:field="*{????}" />
  </td>
</tr>

1 个答案:

答案 0 :(得分:0)

你必须创建另一个实体,即类型房间 与属性即描述

然后在房子实体

@OneToMany(cascade = CascadeType.ALL, mappedBy = "house", fetch = FetchType.EAGER)
private Set<Room> rooms 

在您进入页面之前的控制器中,您可以初始化房屋,然后初始化4个房间并将房间设置为房屋。

所以

Set<Room> h = new HashSet<Room>();
for (i=0;i<4;i++){
  Room room = new Room();
  h.add(room);
}
House house = new House();
shouse.setRooms(h);

然后在您的html表单中,您可以拥有房屋对象

<form id=".." th:action=".." th:object="${house}" method="post">

然后你可以

<tr th:each="i,iterStat : ${house.rooms}">    
  <td>
    <input type="text" th:field="${i.description}" />
  </td>
</tr>

希望这有帮助