ฉันต้องการผูกตาราง HTML ของฉันกับทุกฟิลด์กับโค้ด Java ใน Spring Boot ดังนั้นฉันจึงใส่คำอธิบายประกอบวิธีการของฉันด้วย Postmapping ด้วยเช่นกัน
ฉันสามารถแสดงฟิลด์ทั้งหมดใน Thymeleaf ได้แล้วและยังสามารถตั้งค่าช่องทำเครื่องหมาย ( true / false ) ตามลำดับ
นี่คือโค้ด HTML ของ Thymeleaf ของฉัน:
<form action="#" th:action="@{/mitarbeiterverwaltung}" th:object="${users}" method="post">
<fieldset>
<table border="1" align="center">
<thead>
<tr>
<!-- <th:text = "#{mitarbeiterverwaltung.active}>Active ( Tick ) / Passive</th>-->
<th>Active ( Tick ) / Passive</th>
<th>ID</th>
<th>Username</th>
<th>Anzeigename</th>
<th>Dienstnummer</th>
</tr>
</thead>
<tbody>
<tr th:each="user, itemStat : *{users}">
<td><input th:field="*{users[__${itemStat.index}__].isActive}"
th:checked="${user.isActive}"
class="checkBox"
type="checkBox"
name="checkBox"
/></td>
<td><input th:field="*{users[__${itemStat.index}__].id}"
readonly/></td>
<td><input th:field="*{users[__${itemStat.index}__].username}"
readonly/></td>
<td><input class="anzeigename"
type="text"
name="anzeigename"
th:field="*{users[__${itemStat.index}__].anzeigename}"
th:id="${itemStat.index}"
readonly/></td>
<td><input class="dienstnummer"
type="text"
name="dienstnummer"
th:field="*{users[__${itemStat.index}__].dienstnummer}"
th:id="${itemStat.index}"
readonly/></td>
</tr>
</tbody>
</table>
<br />
<div style="text-align:center;">
<input type="submit" id="submitButton" th:value="Speichern"/>
</div>
</fieldset>
And this is my Java code, where the field isActive of UserCreationDto is always null.
@PostMapping
public String updateActivePassiveUser(@ModelAttribute UserCreationDto userTableSettings,
@RequestParam("checkBox") String checkBoxName, BindingResult result, Model model, Errors errors) {
logger.info("Method {} called in {}", new Object() {}.getClass().getEnclosingMethod().getName(), this.getClass().getName());
if (errors.hasErrors()) {
logger.error("Error in {}", new Object() {}.getClass().getEnclosingMethod().getName());
return "error";
}
List<Benutzer> users = userManagementServiceImpl.getAllUsers();
userManagementServiceImpl.updateActivePassiveUser(1, 0);
return "redirect:/mitarbeiterverwaltung?success";
}
นี่คือรูปภาพของฟิลด์ในโค้ด Java ที่มีการใส่คำอธิบายประกอบเมธอดด้วย @PostMapping
และ @RequestMapping ของฉันก็มีลักษณะดังนี้:
นี่คือวิธี @RequestMapping ของฉัน:
@RequestMapping
public String showUserManagement(Model model) {
logger.info("Method {} called in {}", new Object() {}.getClass().getEnclosingMethod().getName(), this.getClass().getName());
List<Benutzer> users = userManagementServiceImpl.getAllUsers();
userForm = userManagementServiceImpl.saveUserForm(users);
model.addAttribute("users", userForm);
return "mitarbeiterverwaltung";
}
My UserCreationDto โดยที่ฟิลด์ทั้งหมดถูกเพิ่มลงในรายการ:
public class UserCreationDto {
private List<User> users = new ArrayList<>();
public void addUser(User user) {
this.users.add(user);
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
และคลาส POJO ง่าย ๆ ของฉันพร้อมทุกสาขา
@Data
public class User {
//@SafeHtml prevents XSS ( Cross-Site Scripting )
@SafeHtml
private String username;
private String password;
private String anzeigename;
private String dienstnummer;
private long id;
private Boolean isActive;
}
ฟิลด์อื่นๆ เช่น anzeigename, dienstnummer, id และชื่อผู้ใช้ จะถูกกรอกลงในโค้ด Java ของฉัน อย่างไรก็ตาม isactive จะเป็นโมฆะเสมอ
บางทีบางคนสามารถบอกฉันว่าฉันทำอะไรผิดที่นี่
ขอบคุณล่วงหน้า.