2015-07-06 3 views
2

Я использую Spring Boot и проверку javax, особенно @Size. Я пытаюсь захватить значение ограничений по размеру из файла application.properties:Использование Spring @Value внутри @Size

@Size(min= @Value("${device.name.minsize}"), [email protected]("${device.name.maxsize}")) 
private String name; 

Но я получаю следующую ошибку компиляции времени:

Error:(26, 16) java: annotation not valid for an element of type int

Попытку решить эту проблему, я пытающийся следующее:

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

Но у этого есть несколько ошибок.

Как можно правильно преобразовать аннотации @Value? Я возглавил неверный путь? Что я ищу - это чистый способ вытащить ограничения по размеру из кода и в конфигурацию, с которой я могу получить доступ к серверной стороне и в моем шаблоном angularJS/html.

ответ

1

Я не думаю, что вы сможете это сделать. Аннотации требуют постоянных значений в качестве их параметров, так как их нужно обрабатывать во время компиляции.

Вы можете воплощать XML: http://beanvalidation.org/1.1/spec/#xml-config

В качестве альтернативы, если вы просто хотите использовать JSR-303 аннотаций метаданных в AngularJS, вы можете посмотреть на Valdr и Valdr BeanValidation: https://github.com/netceteragroup/valdr https://github.com/netceteragroup/valdr-bean-validation

+0

Обе ссылки полезны, но не совсем то, что мне нужно. Я действительно ищу способ вытащить «магические числа» моей проверки на место, доступное как с передней, так и с задней стороны. Для внешнего интерфейса я мог даже использовать файлы шаблонов и вводить магические значения. – cmaynard

+0

Пошел вперед и отметил это как правильно, так как основной ответ «Нет, вы не можете этого сделать» - это правда. – cmaynard

1

Для еще одного подхода взгляните на https://github.com/jirutka/validator-spring. Он позволяет использовать выражения SpSEL в аннотации проверки бина, включая свойства конфигурации. Вы не сможете использовать стандартные аннотации, такие как @Size, хотя вам придется сформулировать ограничения как выражения SpEL.

Смежные вопросы