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

Reply via email to