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