如何动态设置@Validate注释的mask选项的值

时间:2014-11-19 14:55:52

标签: java regex spring annotations

以下是代码:

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上执行此操作,因为我有几个要验证的字段,我不想执行检查并为每个字段写一条消息错误?

1 个答案:

答案 0 :(得分:0)

可以使用反射在运行时更改注释值。

请看一下(见标记为答案的帖子)

Modify a class definition's annotation string parameter at runtime

小心这种方法,还描述了它的一些注意事项。此外,为了能够在运行时更改此值,注释的保留策略必须为Runtime

这不是您特定问题的解决方案,但它提供了有关如何在注释上执行此操作的有用信息。