目次 > 第2章 Server(Rich)版チュートリアル > 2.5 入力チェック(単項目) > 2.5.1 入力チェックの設定

2.5.1 入力チェックの設定

Server(Rich)版が提供する入力チェックはCommons-Validatorとの連携を行うSpring- modulesを利用した実装を提供しており、入力チェックの定義はバリデーション設定ファイルに記述する。
本項では、リクエストデータに対し、サーバー側で以下のチェックを実施する。

  • ユーザID
    • 最大文字数は5文字である
  • ユーザ名
    • 必須入力である
    • 最大文字数は20文字である
  • 年齢
    • 最大文字数は3文字である

手順

本項では以下の作業が必要になる。

(1) メッセージリソースファイルの確認

入力チェックのエラーメッセージを確認する。

  1. “terasoluna-spring-rich-blank\sources\application-messages.properties”を開き、以下のメッセージが設定されていることを確認する。
    errors.maxlength={0}には{1}文字以下で入力してください.
    errors.required={0}は入力必須項目です.
    

(2) バリデーション設定ファイルの編集

入力チェックの定義を設定する。

  1. “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設定ファイルには、単項目入力チェック機能が定義されている。

  1. “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に設定する。

  1. “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>

・・・略・・・

これにより、データベースアクセス機能に単項目入力チェック機能が追加される。


次項:2.5.2 動作確認

Copyright (C) 2009 NTT DATA CORPORATION