使用 Spring 和 Thymeleaf,我正在添加和编辑用户。我想对用户编辑页面上的选择标签进行选项检查。例如,如果用户的角色是 ADMIN,如果没有选择 admin 选项,则让用户选项被选择。
春季版本:3.2.2 百里香版本:3.2.2 Thymeleaf 布局方言版本:2.5.1
型号如下:
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
...
@Enumerated(value = EnumType.STRING)
private Role role;
...
}
这是我的枚举文件:
public enum Role {
USER, ADMIN
}
这是我在控制器文件中的方法:
Optional<User> validUser = userRepository.findById(id);
model.addAttribute("item", validUser.orElse(null));
model.addAttribute("editPost", editPost);
return "users/edit";
这是我的editPostDto:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EditPost {
...
private Role role;
...
}
这是我的模板文件:
<form action="/users/edit" th:action="@{/users/edit}" method="post" th:object="${editPost}">
...
<select name="role" class="form-control" th:field="*{role}">
<option value="ADMIN" th:selected="${item.role == 'ADMIN'}">Admin</option>
<option value="USER" th:selected="${item.role == 'USER'}">User</option>
</select>
...
</form>
我用chatgpt尝试了很多解决方案,但没有修复它。我尝试了这些解决方案,但它们对我不起作用。
<select name="role" class="form-control" th:field="*{role}">
<option value="ADMIN" th:selected="${item.role == T(com.emrtnm.example.Role).ADMIN}">Admin</option>
<option value="USER" th:selected="${item.role == T(com.example.enums.Role).USER}">User</option>
</select>
感谢您的帮助。
我做了类似的事情,但是是为了公司。尝试使用这个:
<select id="company" class="form-select" name="companyId">
<option value="0" th:selected="${contact.companyId == null}">Kein Unternehmen</option>
<option th:each="company, i : ${company}" th:value="${company.id}" th:text="${company.name}" th:selected="${contact.companyId != null and contact.companyId == company.id}"></option>
</select>