We are using spring 3 and struts 2. We use spring @value annotation to get
values from property files.
We want to get validation rules from property files instead of hard-coding them
in action.
Here is sample property system.properties transfer.account.min.amount=10
Here is the action:
publicclassTransferToAccountimplementsPreparable{@Value("${transfer.account.min.amount}")publicStringminAmount;//...........execute
and other methods omitted@IntRangeFieldValidator(type =ValidatorType.FIELD,min
="${minAmount}",key
="validate.int.min")publicvoidsetAmount(Integeramount){this.amount =amount;}
The minAmount is populated correctly by value 10, but the validation is not
working.
________________________________
To see if parameters are passed correctly, I make a test as below.
Assume we want to get a key from spring managed property file ( This is just a
test ;) )
system.properties
transfer.account.min.amount.key=validate.int.min
The resource bundel is: validate.int.min = This field must be more than ${min}
...and make this change
@IntRangeFieldValidator(type =ValidatorType.FIELD,min ="${minAmount}",key
="${transfer.account.min.amount.key}")
Now when an error happens the validation message shows validate.int.min,
instead of fetching this value from resource bundle!
Of course, when you run below code:
@IntRangeFieldValidator(type =ValidatorType.FIELD,min ="${minAmount}",key
="validate.int.min")
The error message is fetched resource bundle correctly!
________________________________
If I can use annotation in this way, please let me know what is my mistake!
If I can not use annotations like this, please let me know what is
the best way to avoid hard coding the validaiton rolls in actions.
~Regards,
~~Alireza Fattahi