目次 > 第2章 Server(Rich)版チュートリアル > 2.5 入力チェック(単項目) > 2.5.1 入力チェックの設定
2.5.1 入力チェックの設定
Server(Rich)版が提供する入力チェックはCommons-Validatorとの連携を行うSpring- modulesを利用した実装を提供しており、入力チェックの定義はバリデーション設定ファイルに記述する。
本項では、リクエストデータに対し、サーバー側で以下のチェックを実施する。
- ユーザID
- 最大文字数は5文字である
- ユーザ名
- 必須入力である
- 最大文字数は20文字である
- 年齢
- 最大文字数は3文字である
手順
本項では以下の作業が必要になる。
- (1) メッセージリソースファイルの確認
- (2) バリデーション設定ファイルの編集
- (3) アプリケーション共通のSpring設定ファイルの確認
- (4) “tutorial-servlet.xml”の編集
(1) メッセージリソースファイルの確認
入力チェックのエラーメッセージを確認する。
- “terasoluna-spring-rich-blank\sources\application-messages.properties”を開き、以下のメッセージが設定されていることを確認する。
errors.maxlength={0}には{1}文字以下で入力してください. errors.required={0}は入力必須項目です.
(2) バリデーション設定ファイルの編集
入力チェックの定義を設定する。
- “terasoluna-spring-rich-blank/webapps/WEB-INF/validation/validation.xml”を開き、以下の箇所に設定を追加する。
<form-validation> <formset> <form name="class-name"> <field property="field-name"></field> </form> <!-- 単項目の入力チェック --> <form name="userBean"> <field property="id" depends="maxLength"> <arg key="id" position="0" /> <arg key="${var:maxlength}" resource="false" position="1" /> <var> <var-name>maxlength</var-name> <var-value>5</var-value> </var> </field> <field property="name" depends="required,maxLength"> <arg key="name" position="0" /> <arg key="${var:maxlength}" resource="false" position="1" /> <var> <var-name>maxlength</var-name> <var-value>20</var-value> </var> </field> <field property="age" depends="maxLength"> <arg key="age" position="0" /> <arg key="${var:maxlength}" resource="false" position="1" /> <var> <var-name>maxlength</var-name> <var-value>3</var-value> </var> </field> </form> </formset> </form-validation>
<form>要素のname属性には、チェック対象のJavaBeanのクラス名を指定する。頭文字は小文字より開始する。
本項では、“jp.terasoluna.rich.tutorial.service.bean.UserBean”クラスがチェック対象となるため、“userBean”と指定する。
<field>要素のproperty属性に、チェック対象となるフォームの属性を設定し、depends属性に利用するルールを設定する。
今回利用するルールは以下の通りである。
ルール | 説明 |
required | 必須チェック |
maxlength | 最大文字数チェック |
<arg>要素は(1)で確認したメッセージのプレースホルダで置き換える文字列を表す。
(3) アプリケーション共通のSpring設定ファイルの確認
アプリケーション共通のSpring設定ファイルには、単項目入力チェック機能が定義されている。
- “terasoluna-spring-rich-blank/webapps/WEB-INF/applicationContext.xml”を開き、以下の設定がされていることを確認する。
・・・略・・・ <!-- ======================================== 入力チェック定義 --> <!-- 入力チェッククラスを生成するファクトリ --> <bean id="validatorFactory" class="jp.terasoluna.fw.validation.springmodules.DefaultValidatorFactoryEx"> <property name="validationConfigLocations"> <list> <value>/WEB-INF/validation/validator-rules.xml</value> <value>/WEB-INF/validation/validator-rules-ex.xml</value> <value>/WEB-INF/validation/validation.xml</value> </list> </property> </bean> ・・・略・・・
備考
validation.xmlのformタグのname属性に絶対パスで記述する場合は、DefaultBeanValidatorクラスのBean定義にプロパティuseFullQualifiedClassNameを追加し、tureを設定する。
(4) “tutorial-servlet.xml”の編集
単項目入力チェック機能をコントローラ定義の抽象定義BLogicControllerに設定する。
- “terasoluna-spring-rich-blank/webapps/WEB-INF/tutorial-servlet.xml”を開き、以下のように変更する。
変更前
・・・略・・・ <!-- ======================================== BLogicコントローラ定義 --> <!-- コントローラ抽象Bean定義 (ビジネスロジック:BLogic) --> <bean id="blogicController" abstract="true" class="jp.terasoluna.fw.web.rich.springmvc.controller.BLogicController"> <property name="ctxSupport" ref="ctxSupport"/> <!-- <property name="validator" ref="beanValidator" /> --> </bean> ・・・略・・・
変更後
・・・略・・・ <!-- ======================================== BLogicコントローラ定義 --> <!-- コントローラ抽象Bean定義 (ビジネスロジック:BLogic) --> <bean id="blogicController" abstract="true" class="jp.terasoluna.fw.web.rich.springmvc.controller.BLogicController"> <property name="ctxSupport" ref="ctxSupport"/> <property name="validator" ref="beanValidator" /> </bean> ・・・略・・・
これにより、データベースアクセス機能に単項目入力チェック機能が追加される。