我们使用的是 spring 3 和 struts 2。我们使用 spring @value 注解从属性文件中获取值。
我们希望从属性文件中获取验证规则,而不是在实际中对它们进行硬编码。
这是示例属性
system.properties
transfer.account.min.amount=10
这是动作:
public class TransferToAccount implements Preparable {
@Value("${transfer.account.min.amount}") public String minAmount;
//...........execute and other methods omitted
@IntRangeFieldValidator(type = ValidatorType.FIELD, min = "${minAmount}", key = "validate.int.min")
public void setAmount(Integer amount) {
this.amount = amount;
}
minAmount 由值 10 正确填充,但验证不起作用。
为了查看参数是否正确传递,我进行了如下测试。
假设我们想从 spring 托管属性文件中获取一个密钥(这只是一个测试;))
system.properties
transfer.account.min.amount.key=validate.int.min
资源包是:
validate.int.min = This field must be more than ${min}
...我们更改验证如下:
@IntRangeFieldValidator(type = ValidatorType.FIELD, min = "${minAmount}", key = "${transfer.account.min.amount.key}")
现在,当发生错误时,验证消息会显示validate.int.min
,而不是从资源包中获取此值!
当然,当您运行以下代码时:
@IntRangeFieldValidator(type = ValidatorType.FIELD, min = "${minAmount}", key = "validate.int.min")
错误信息是正确获取资源包!
如果我可以以这种方式使用注释,请告诉我我的错误是什么!
如果我不能使用这样的注释,请告诉我什么是避免硬编码验证滚动操作的最佳方法。