FrontPage2008/01/20からのアクセス回数 17897 Spring-MVCプラグイン機能追加(Validation) †formのvalidation機能をSpring-MVCプラグイン1.1.1に追加しました。 あくまでも、ユーザがvalidation.xmlを編集するためのひな形を提供するという 考えです。 Spring-MVCプラグイン1.1.1のインストール †Spring-MVCプラグインの1.1.1のインストールには以下の4ファイルが必要です。
上記の添付ファイルをダウンロードしてください。近々公開用リポジトリを用意する予定です(それまでinstall-fileをご使用ください)。
Validationで追加・変更されたファイル †Validation機能追加で追加・変更されたファイルは以下の通りです。
テスト用で追加・変更されたファイルは以下の通りです。
内容は、src/mainのものと同じものです。 pom.xml †validationには、org.springmodulesを使用します。 pom.xmlへの追加は、以下の通りです。 <dependency> <groupId>org.springmodules</groupId> <artifactId>spring-modules-validation</artifactId> <version>0.8</version> <scope>compile</scope> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.1.4</version> <scope>compile</scope> </dependency> servlet-stub.xml †各フォームコントローラでvalidationを有効にするために、validator属性を追加します。 <bean id="memberController" class="example.test.web.EditMemberController" parent="baseMemberController"> .... <property name="validator" ref="beanValidator"/> .... </bean> validation.xml(自動生成される) †各フォームへのValidationは、validation.xmlに定義します。 <form name="member"> <field property="address" depends="required"> <arg0 key="member.address" /> </field> <field property="name" depends="required"> <arg0 key="member.name" /> </field> </form> ここでは、フォームの各属性を必須(required)として定義しています。 これを適宜変更してください。 validator-rules.xml †validatorが使用する共通ルール、ここではstrutsのvalidation-rules.xmlをルールを使用しています。 servlet-def.xml †エラーメッセージ定義とValidation機能のために、servlet-def.xmlに messageSourceとbeanValidatorを定義します。 <!-- Message sources --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basenames"> <list> <value>messages</value> <value>form-messages</value> </list> </property> </bean> <!-- Validators --> <bean id="beanValidator" class= "org.springmodules.validation.commons.DefaultBeanValidator"> <property name="validatorFactory" ref="validatorFactory" /> </bean> <bean id="validatorFactory" class= "org.springmodules.validation.commons.DefaultValidatorFactory"> <property name="validationConfigLocations"> <list> <value>WEB-INF/validator-rules.xml</value> <value>WEB-INF/validation.xml</value> </list> </property> </bean> message.properties †validator-rulesが使用するエラーメッセージを定義します。 # -- validator errors -- errors.header= errors.footer= errors.prefix=<div class="error"> errors.suffix=</div><br/> errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. errors.maxlength={0} can not be greater than {1} characters. errors.invalid={0} is invalid. errors.byte={0} must be a byte. errors.short={0} must be a short. errors.integer={0} must be an integer. errors.long={0} must be a long. errors.float={0} must be a float. errors.double={0} must be a double. errors.date={0} is not a date. errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors.email={0} is an invalid e-mail address. form-message.properties(自動生成される) †各フォームの属性をエラーメッセージで表示するときの名称をform-message.propertiesで定義 します。 # -- form messages -- # -- Member member.address=Member address member.name=Member name Validationの動作確認 †実際にvalidationが正常の動作するかhttp://localhost:8080/test/でaddリンクをクリックして 一部の値をセットしないで、Save Changesボタンを押すと、以下のように属性の横にエラーメッセージを 出力して、入力画面に戻ってきます。 validation.xmlで使用できるvalidationルール †今回は、apache common validatorの機能を使ってvalidationを実装しています。 validator-rulesに定義してあるvalidationルールを以下に示します。
各ルールの使い方は、http://www.techscore.com/tech/ApacheJakarta/Struts/13.html 詳しく説明されています。 型変換をチェックする †byte, date, double, float, integer, long, shortは、すべて型変換が可能かどうかをチェックするルールです。 使い方はすべて同じで、 <field property="address" depends="required,byte"> <arg0 key="member.address" /> </field> のようにdepends属性でrequired,byteの様にrequired,の後に型名称を指定します。requiredを付けるのは型変換時のエラーを防ぐためです。 文字列をチェックする †creditCard, email, mask, maxlength, minlengthは文字列をチェックするルールです。
数値の範囲をチェックする †intRange, floatRangeは数値の範囲をチェックするルールです。 例 <field property="quantity" depends="required,intRange"> <arg0 key="lineItem.quantity" /> <var> <var-name>min</var-name> <var-value>1</var-value> </var> <var> <var-name>max</var-name> <var-value>10</var-value> </var> </field> コメント †この記事は、 皆様のご意見、ご希望をお待ちしております。 Tweet |