在 @Size 中使用 Spring @Value

cma*_*ard 5 java validation spring spring-boot

我正在使用 Spring Boot 和 javax 验证,特别是 @Size。我试图从 application.properties 文件中获取大小限制的值:

@Size(min= @Value("${device.name.minsize}"), max=@Value("${device.name.maxsize}"))
private String name;
Run Code Online (Sandbox Code Playgroud)

但我收到以下编译时错误:

错误:(26, 16) java:注释对于 int 类型的元素无效

为了解决这个问题,我正在尝试以下操作:

@Size(min=Integer.parseInt( @Value("${device.name.minsize}") ), max=Integer.parseInt( @Value("${device.name.maxsize}") ) )
Run Code Online (Sandbox Code Playgroud)

但这也有多个错误。

如何正确转换@Value注解?我是否走错了路?我正在寻找一种干净的方法,将大小限制从代码中拉出来并放入我可以访问服务器端和模板化的 AngularJS/html 中的配置中。

小智 1

我不认为你能够做到这一点。注释需要常量值作为参数,因为它们需要在编译时处理。

您可以外部化 xml: http://beanvalidation.org/1.1/spec/#xml-config

或者,如果您只想在 AngularJS 中使用 JSR-303 注释元数据,您可以查看 Valdr 和 Valdr BeanValidation:https: //github.com/netceteragroup/valdr https://github.com/netceteragroup/valdr- bean 验证