以下是代码:
SomeFile.properties
string.regex="someRegex"
SomeActionClass.java
@Value("${string.regex}")
private String REGEX="";
@Validate(mask = REGEX)
private String stringToValidate;
文件SomeFile.properties在服务器启动时加载,值“someRegex”存储在会话中的某个位置,因此它可用。
问题是mask需要一个常量值,如果我把final放在REGEX =“”,我就不能用string.regex覆盖init值;另一方面,如果我把最终但不初始化变量,java编译器会抱怨它。
有没有办法使用掩码选项和从我不知道的文件中检索的值?
是否有可能以智能方式直接在jsp上执行此操作,因为我有几个要验证的字段,我不想执行检查并为每个字段写一条消息错误?
答案 0 :(得分:0)
可以使用反射在运行时更改注释值。
请看一下(见标记为答案的帖子)
Modify a class definition's annotation string parameter at runtime
小心这种方法,还描述了它的一些注意事项。此外,为了能够在运行时更改此值,注释的保留策略必须为Runtime
这不是您特定问题的解决方案,但它提供了有关如何在注释上执行此操作的有用信息。