如何在 spring 引导中使用枚举 class return 验证消息?
How to return validation message using Enum class in spring boot?
我不是在问“如何验证枚举”。
假设我有这样的请求正文:
public class VerifyAccountRequest {
@Email(message = "2")
private String email;
}
我想做的不是硬编码方式,我只是想 return 来自枚举 class 的消息值。但是 IDEA 说“属性值必须是常量”
public enum MyEnum {
EMAIL("2", "info"),
public String messageCode;
public String info;
}
public class VerifyAccountRequest {
@Email(message = MyEnum.Email.code) // NOT_WORKING
private String email;
}
我也可以在界面中定义“2”,但我不想那样做:
public interface MyConstant {
String EMAIL = "2";
}
public class VerifyAccountRequest {
@Email(message = MyConstant.EMAIL) // WORKS, BUT I HAVE TO USE ENUM !!!
private String email;
}
是否可以使用枚举 class 来 return 消息值?
Java 规则说当你有一个注解,并且它有一个需要原始类型(例如 int)或 String 的参数时,该值必须是常量表达式。您正在尝试在运行时设置一个值。但是,注释属性必须在 JVM 加载 class 之前具有准确的值,否则会显示错误。
结构element_value可以存储四种不同类型的值:
- 常量池中的一个常量
- a class 文字
- 嵌套注释
- 值数组
因此,注释属性中的常量是编译时常量。否则,编译器将不知道应该将什么值放入常量池并将其用作注释属性。更多阅读 this.
我不是在问“如何验证枚举”。
假设我有这样的请求正文:
public class VerifyAccountRequest {
@Email(message = "2")
private String email;
}
我想做的不是硬编码方式,我只是想 return 来自枚举 class 的消息值。但是 IDEA 说“属性值必须是常量”
public enum MyEnum {
EMAIL("2", "info"),
public String messageCode;
public String info;
}
public class VerifyAccountRequest {
@Email(message = MyEnum.Email.code) // NOT_WORKING
private String email;
}
我也可以在界面中定义“2”,但我不想那样做:
public interface MyConstant {
String EMAIL = "2";
}
public class VerifyAccountRequest {
@Email(message = MyConstant.EMAIL) // WORKS, BUT I HAVE TO USE ENUM !!!
private String email;
}
是否可以使用枚举 class 来 return 消息值?
Java 规则说当你有一个注解,并且它有一个需要原始类型(例如 int)或 String 的参数时,该值必须是常量表达式。您正在尝试在运行时设置一个值。但是,注释属性必须在 JVM 加载 class 之前具有准确的值,否则会显示错误。
结构element_value可以存储四种不同类型的值:
- 常量池中的一个常量
- a class 文字
- 嵌套注释
- 值数组
因此,注释属性中的常量是编译时常量。否则,编译器将不知道应该将什么值放入常量池并将其用作注释属性。更多阅读 this.