gpt4 book ai didi

java - 比较枚举与列表 Thymeleaf

转载 作者:行者123 更新时间:2023-12-02 01:23:47 36 4
gpt4 key购买 nike

我在实体中插入了一个枚举,并带有一些默认值。我想将其与分配给实体的枚举进行比较。

我尝试在列表中查找枚举字符串,但没有得到结果

public class Role{

@NotEmpty
@Enumerated(value = EnumType.STRING)
private Authority authority;

public static enum Authority {
ROLE_ADMIN,
ROLE_USER
}
}

public class UserCheck implements UserDetails {

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private List<Role> roles;

public List<Role> getRoles() {
return roles;
}
}

遍历枚举并与列表进行比较

<div class="form-group">
<label for="exampleSelectStore">Roles</label> <select class="form-control" id="exampleSelectStore" multiple="multiple">
<option th:each="authority : ${T(cl.tricotcorp.app.checklist.models.entity.Role.Authority).values()}" th:text="${authority}" th:value="${authority}" th:selected="${#lists.contains(userCheck.getRoles(), authority)}"> </select>
</div>

预期结果是将匹配标记为“已选中”

最佳答案

getRoles()返回 List<Role> ,和authorityAuthority ,所以你基本上是在问是否有 Role.equals(Authority) ,根据定义始终是 false .

解决这个问题的一种方法是向UserCheck添加一个辅助方法,这样它就很容易使用。 :

public boolean hasAuthority(Authority authority) {
return this.roles.stream().anyMatch(r -> r.getAuthority() == authority);
}

那么你的 Thymeleaf 代码将是:

<option ... th:selected="${userCheck.hasAuthority(authority)}">

关于java - 比较枚举与列表 Thymeleaf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57261061/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com