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")
エラー メッセージは、リソース バンドルが正しくフェッチされていることです。
このように注釈を使用できる場合は、私の間違いを教えてください!
このような注釈を使用できない場合は、アクションで検証ロールをハードコーディングしないようにする最善の方法を教えてください。