我在后端有一个名为 PatientDto 的类。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PatientDto {
private String nationalId;
private String firstName;
private String lastName;
private List<Phone> phones;
}
还有一个名为 Phone 的类:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Phone {
private String phoneNumber;
}
假设我的 html Thymeleaf 中有两个输入元素,用于从用户那里获取两个电话号码:
<form th:method="post" th:action="@{/reception/savePatient}" th:object="${patientDto}" >
<input type="text" th:field="*{nationalId}" id="nationalId">
<input type="text" th:field="*{firstName}" id="firstName">
<input type="text" th:field="*{lastName}" id="lastName">
<input type="text" id="phoneNumber1">
<input type="text" id="phoneNumber2">
<button type="submit" class="btn btn-primary" id="savePatientBtn">Save</button>
</form>
控制器:
@GetMapping
public String getReceptionView(Model model){
PatientDto patientDto = new PatientDto();
model.addAttribute("patientDto", patientDto);
return "reception";
}
@PostMapping("/reception/savePatient")
public String savePatient(@ModelAttribute("patientDto") PatientDto patientDto){
System.out.println("???????????? reception>>> " + patientDto.toString());
return "reception";
}
如何将这两个电话号码作为电话列表发布,作为表单提交时 PatientDto 对象的一部分? 这两个电话号码的“th:field”值是多少?
我感谢你的帮助
它应该看起来像这样:
<input type="text" th:field="*{phones[0].phoneNumber}">
<input type="text" th:field="*{phones[1].phoneNumber}">
(其中
phoneNumber
是 Phone
对象上的正确字段名称。)
如果您的
phones
列表中已有元素,则可以使用循环,但必须对 th:field
属性使用预处理。像这样:
<input th:each="phone, i: *{phones}" type="text" th:field="*{phones[__${i.index}__].phoneNumber}" />