0

我们使用的是 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")

错误信息是正确获取资源包!


如果我可以以这种方式使用注释,请告诉我我的错误是什么!

如果我不能使用这样的注释,请告诉我什么是避免硬编码验证滚动操作的最佳方法。

4

0 回答 0