2012-01-11 13 views
3

私はストラットWebアプリケーション内の2.2.3を使用しています。 UIから送信されたフォームデータに対してstruts2アノテーションベースのバリデーションを使用したいと思います。シナリオは: ユーザーはすべてのフォームフィールドを入力し、[送信]ボタンをクリックします。 登録フォームデータを格納するためのPersonクラスと登録ロジックをトリガーするRegistrationActionを作成しました。 RegistrationActionは、尊重されたgetter/setterを持つpersonオブジェクトへの参照を保持します。 struts 2アノテーションを使用して、フォーム提出後にPersonクラスの個々のフィールドを検証する方法を提案してください。のStruts 2.2.3注釈ベースの検証

ありがとうございました。

答えて

0

Struts2検証アノテーションを試したことがありますか?非常に簡単でストレートな転送は、クラスレベルで@Validation()アノテーションを定義し、ユースケースごとに標準アノテーションまたはカスタムアノテーションを適用することだけです。

注釈ベースの検証文書を参照してください。

Validation-Annotation

+0

でActualyこのアノテーション(@Validation())は支柱2.1ので、廃止予定されています。あなたが提供したリンクでも言及されています。 – Arun

1

それはValidations注釈のfieldNameプロパティを使用して作ってみます。以下のような何か:

@Validations( requiredFields = {@RequiredFieldValidator(type = ValidatorType.SIMPLE, fieldName = "person.name", message = "You must enter a value name.")} )

さらに参照するために、次のリンクをご参照ください:setterメソッドの使用に

Struts2 Validation-annotation

+0

実際には、この注釈(@Validation())はstruts 2.1以降では使用できません。あなたが提供したリンクでも言及されています。 – Arun

+2

はい私はそれについて知っています:) JSR 303バリデーションを使用する別の方法で、struts2は既にこの[oval-plugin](http://struts.apache.org/2.2.3/docs/oval-plugin.html)のプラグインを持っています。 –

+0

実際に私の問題は、使用する注釈ではなく使用方法です。私はstruts 2のアノテーションだけを使用できますが、1つしか推奨されていません。私が問題文で言及したように、Action(Person DTOへの参照を保持する)やPersonDTOのフォームデータのどこにフィールドレベルの注釈を書くべきか、 – Arun

1

@RequiredFieldValidator(type=ValidatorType.FIELD, message="your message here") 

@Validationsの@Validator( ...)不要

0

あなたは別のPersonクラスについて言及しているので、これはモデル駆動型のアクションか、またはActionクラスのsetPersonのような関数を使用していると思います。 Person内の個々のフィールドを検証する場合は、関連するアクションメソッドでVisitorFieldValidatorを使用し、フィールドの検証をPersonオブジェクト自体に置く必要があります。

処置

@VisitorFieldValidator(message = "") 
public void setPerson(Person person) { 
    this.person = person; 
} 

、例えば

Person

@RequiredFieldValidator(message = "Last name is required.") 
public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 
関連する問題