如何使用 Thymeleaf 和 Java Enum 检查所选选项

问题描述 投票:0回答:1

使用 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>

感谢您的帮助。

java spring thymeleaf
1个回答
0
投票

我做了类似的事情,但是是为了公司。尝试使用这个:

<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>
© www.soinside.com 2019 - 2024. All rights reserved.