【发布时间】:2020-06-13 21:37:43
【问题描述】:
我想将可用的用户角色存储到 Enum 中:
public enum Role implements GrantedAuthority {
ROLE_ADMIN, ROLE_CLIENT;
public String getAuthority() {
return name();
}
}
实体值:
@Column(length = 25)
@Enumerated(EnumType.STRING)
private Role role;
我使用代码创建新用户:
Users user = new Users();
user.setRole(Role.valueOf("ROLE_ADMIN"));
有没有办法检查 ROLE_ADMIN 是否是一个有效的枚举值,因为我可以破坏代码它不是一个有效的值。
【问题讨论】:
-
valueOf如果字符串与值不匹配,将抛出IllegalArgumentException,因此您可以抓住它。这就是通常的检查方式。 -
@racraman 为什么不回答您的评论?
-
不确定是什么问题。如果要创建
Users的新实例,可以直接使用setRole(Role.ROLE_ADMIN)。如果真的,rol 值以“字符串方式”“来自”前端应用程序(或其他来源),那么也许您可以在此处包含该代码以更好地帮助您。 -
是的,在我的情况下,值来自 Angular 作为字符串,所以我需要对收到的值进行一些检查。
-
@PeterPenzov 你觉得我的回答怎么样?