将Country对象设置为Pet对象时出现问题。
@Getter
@Setter
@EqualsAndHashCode
@NoArgsConstructor
@Entity
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
}
我的宠物课
@Data
@Entity
public class Pet {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
private Country country;
}
我试图以这种方式做到这一点(国家/地区是数据库中所有国家/地区的列表,我将此作为属性添加到模型中):
<form th:object = "${pet}" th:action="@{/pet/}" method = "post">
<select class="form-control" th:field="*{country}" >
<option th:each="countryVal : ${countries}"
th:value="${countryVal}"
th:text="${countryVal.getName()}"
>val
</option>
</select>
</form>
但是这不会将国家/地区对象保存到我的Pet对象中。 我必须这样做,我只将id保存到country对象:
<form th:object = "${pet}" th:action="@{/pet/}" method = "post">
<select class="form-control" th:name="country.id" >
<option th:each="countryVal : ${countries}"
th:value="${countryVal.id}"
th:text="${countryVal.getName()}"
>val
</option>
</select>
</form>
有没有办法在Pet对象中将我的国家/地区对象从列表保存到国家/地区? 或者另一种方式。 这个代码是用country.id正确的方法将现有对象从数据库保存到我的Pet类中的对象吗?
答案 0 :(得分:0)
th:field
代码中缺少select
。试试这个
<select class="form-control" th:field="*{country}"> // * is NOTa typo here
<option th:each="countryVal : ${countries}"
th:value="${countryVal.id}"
th:text="${countryVal.getName()}"
>val
</option>
</select>
免责声明:这适用于Thymeleaf 3.