Saya ingin mengikat tabel HTML saya dengan semua bidang ke kode Java di Spring Boot. Oleh karena itu, saya juga telah menjelaskan metode saya dengan Postmapping.
Saya sudah bisa menampilkan semua bidang di Thymeleaf dan saya juga bisa mengatur nilai kotak centang (true/false) yang sesuai.
Ini adalah kode HTML Thymeleaf saya:
<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";
}
Berikut adalah gambar field dalam kode Java yang metodenya dianotasi dengan @PostMapping
Dan begitu pula @RequestMapping saya terlihat seperti:
Ini adalah metode @RequestMapping saya:
@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";
}
UserCreationD saya tempat semua bidang ditambahkan ke daftar:
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;
}
}
Dan kelas POJO saya yang sederhana dengan semua bidangnya
@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;
}
Bidang lain seperti anzeigename, dienstnummer, id, dan nama pengguna diisi dalam kode Java saya, namun isactive selalu null.
Mungkin, seseorang dapat memberi tahu saya kesalahan apa yang saya lakukan di sini.
Terima kasih banyak sebelumnya.