这是代码:
SomeFile.properties
string.regex="someRegex"
SomeActionClass.java
@Value("${string.regex}")
private String REGEX="";
@Validate(mask = REGEX)
private String stringToValidate;
服务器启动时将加载文件SomeFile.properties,并且值“ someRegex”存储在会话中的某个位置,因此该文件可用。
问题在于,掩码需要一个恒定值,如果我将final放在REGEX =“”处,则无法用string.regex一个覆盖初始值。另一方面,如果我将final变量放入但不初始化变量,则Java编译器会抱怨它。
有没有一种方法可以将mask选项与从我不知道的文件中检索的值一起使用?
因为我有多个要验证的字段并且我不想执行检查并为每个错误编写消息错误,所以可以以一种灵巧的方式直接在jsp上执行此操作吗?
最佳答案
注释值可以在运行时使用反射进行更改。
请对此进行查看(请参阅标记为答案的帖子)
Modify a class definition's annotation string parameter at runtime
请谨慎使用此方法,并说明其中的一些注意事项。另外,为了能够在运行时调整该值,注释的保留策略必须为Runtime
这不是解决您特定问题的方法,但是它具有有关如何对注释执行此操作的有用信息。