2012-01-19 7 views
1

Struts2上のオブジェクトのリストを検証しようとしています。Struts2リストの検証

INVOICEというクラスがあるとします。 それはと呼ばれる3つのプロパティがあります。product, quantity, price

をそして私はINVOICESと呼ばれるINVOICEのリストを持っています。

jspファイルでは、リストを反復処理すると、これらの入力が生成されます。

invoices[0].product 
invoices[0].quantity 
invoices[0].price 
invoices[1].product 
invoices[1].quantity 
invoices[1].price 

投稿後、これらの値を検証する必要があります。

ご覧のとおり、Struts2はコレクションの検証をサポートしていません。 http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/validator/validators/CollectionFieldValidator.html

注釈を使用して行う方法が見つかりました。何かのように

@RequiredStringValidator(message="Product name is required") 
public void setProduct(String product) { 
    this.product = product; 
} 

私はプロジェクトのコーディング標準のために検証クラスの注釈を入れることはできません。なぜなら私はMESSAGESをプロパティファイルに保存する必要があるからです。

私は、ここで述べたVisitorValidationを使ってこの検証を行うことができることを読んだ。 http://struts.apache.org/2.0.11.2/docs/using-visitor-field-validator.html

しかし、私はこれらの例を見ることによってこれを行う方法を理解できませんでした。

バリデーションXMLだけを使用する方法はありますか?ありがとう

ANSWER:

私はVisitorFieldValidatorでそれをやった、と私は正しい答えにコメントとして、私はまだ問題を抱えていました。

私のモデルパッケージにMyModel-validation.xmlを置くと問題が解消しました。正解として

が強調表示:

は、次のモデルクラスに、彼らが属する1つの場所にあなたのモデルのためのあなたの検証を管理します。

答えて

2

実際に訪問者フィールドの検証がベットされます。 Struts2のドキュメントは最も包括的ではなく、訪問者フィールドバリデーターhereの簡単な例が含まれています。

VisitorFieldValidatorを使用すると、オブジェクトの独自の検証ファイルを使用して、アクションのオブジェクトプロパティに検証を転送できます。これにより、ModelDriven開発パターンを使用して、モデルクラスの横に、モデルの妥当性検査を1か所、所属する場所で管理することができます。VisitorFieldValidatorは、単純なオブジェクトプロパティオブジェクトのコレクション、または配列のいずれかを処理できます。あなたのアクションで

、あなたのようにinvoicesコレクションの検証を置くことができます。

<validators> 
    <field name="invoices"> 
     <field-validator type="visitor"> 
      <message></message> 
     </field-validator> 
    </field> 
</validators> 

その後、単にあなたのInvoice Beanの検証ロジックを保持し、一緒にそれを置くでしょうInvoice-validation.xmlの作成に進みますInvoiceクラス。たとえば、次のように

<validators> 
    <field name="product"> 
     <field-validator type="requiredstring"> 
      <message>product is required.</message> 
     </field-validator> 
    </field> 
</validators> 
+0

と仮定一覧請求書=新しいArrayListを();.ファイル名をInvoices-validation.xmlまたはFoo-validation.xmlにする必要がありますか? – batbaatar

+0

私は妥当性検査で傍受されないので、私は尋ねています。 – batbaatar

+0

'Invoice-validation.xml'にする必要があります。しかし、私の例では、必要な 'invoices'フィールド検証設定の' message'要素がありませんでした。この例を更新します。コンソールにエラーが表示されますか? – Asa

関連する問題