石橋 稔章(いしばし としあき)
株式会社DTSネットワーク事業本部所属。金融機関向けのStruts/Springベースのフレームワークを利用したWebアプリケーション自動生成ツールの開発・保守,プロジェクト支援に携わる。
青木 正平(あおき しょうへい)
株式会社DTS ネットワーク事業本部所属。Struts/Springベースのフレームワーク開発,プロジェクト支援に携わる。

 本稿から2回にわたって,SpringMVCの入力チェック機能について解説します。入力チェックとは,登録処理などで,ユーザーの入力したデータに誤りがないかチェックを行うことです。

 Webアプリケーションでよく見られるパターンは以下のようなものでしょう。

  • ユーザーが正しい入力をした場合,処理を続行し,次の画面(登録結果画面など)へ進む
  • ユーザーが不正な入力をした場合,入力時の画面に遷移し,エラー・メッセージを表示する

 画面遷移は,前回の記事「第4回 SpringMVCの基本を知る」で紹介した通り,SpringMVCのコントローラ機能を使用して実現します。そして,今回の本題となる入力チェック・ロジックについては,Springが提供するValidatorインタフェースを実装したクラス(入力チェック・クラス)を開発者が作成する必要があります。

 入力チェック・クラスのロジックは,開発者が一からコーディングしていくことになります。SpringMVCでは,空白かどうかチェックするユーティリティを提供しているだけで,「桁数チェック」「日付フォーマット・チェック」など,他のルールに関しては,自力でコーディングしなければなりません。

 しかし,SpringのサブプロジェクトSpring Modulesの拡張モジュール「spring-modules-validation」と連携することで,様々な入力チェックルールを利用することができます。spring-modules-validationでは,3種類の入力チェックの方式を提供しています(表1)。

表1●spring-modules-validation が提供する入力チェックの方式
種類 概要
Commons Validator StrutsのValidatorプラグインでも使用している有名な入力チェック・フレームワークで,様々な入力チェック・ルールを提供している。XML形式の設定ファイルにどのような入力チェックを行うかを記述する。開発者が入力チェック・クラスを作る必要はない。ユーザーがチェック・ルールを独自に追加することも可能
Valang(Validation Language) Springの入力チェックをJavaのクラスなしに簡単に素早く実装することを目的として開発されている。Valangという独自の言語を使用して入力チェックを行う
Bean Validation Framework アノテーションを利用した入力チェックの設定や,独自のNamespaceを定義する(タグや属性を定義すること)ことで,XMLを簡単に記述できる仕組みを提供する

 次からは,まず基本編としてSpringMVCでの入力チェックの仕組みを説明し,ノーマルな入力チェック・クラスのサンプルを作成します。次回の応用編では,spring-modules-validationのCommons Validatorとの連携方法について説明します。

Springの機能を利用した入力チェック(基本編)

 SpringMVCを利用したアプリケーションでは,ブラウザでサブミットボタンが押されると,まずサーブレットが処理を受け付け,リクエストURLに対応したコントローラを呼び出します(図1)。コントローラでは,ブラウザで入力した値を入力クラスにセットします(矢印(1)の流れ)。

 その後,コントローラは入力チェック・クラスを呼び出し,入力クラスのチェックを行います(矢印(2))。前述の通り,入力チェック・クラスはValidatorインタフェースを実装したクラスで,開発者が一から入力チェック処理をコーディングする必要があります。入力チェック・クラスは,コントローラごとに設定することが可能です。

 入力チェック処理に問題がなければ,コントローラはビジネス・ロジックを呼び出すことになります(矢印(3))

図1●SpringMVCにおける入力チェックの流れ
図1●SpringMVCにおける入力チェックの流れ

 ここからは,実際にサンプル・アプリケーションを作成しながら,入力チェック・クラスの作成方法を説明していきます。作成するサンプルは,ユーザーの入力値に対して,必須チェックおよび桁数チェック,日付フォーマット・チェックを行う,単純なアプリケーションです(図2)。

図2●サンプル・アプリケーションのイメージ1
図2●サンプル・アプリケーションのイメージ2
図2●サンプル・アプリケーションのイメージ

 手順は,以下の通りです。また,Eclipseのパッケージ・エクスプローラーで表示した際のフォルダ構成は,図3の通りです。プロジェクト名は任意ですが,ここではvalidateSampleとします。

手順1:web.xmlの更新
手順2:入力画面(input.jsp)の作成
手順3:入力クラス(ValidateCommand.java)の作成
手順4:入力チェック・クラス(FieldValidator.java)の作成
手順5:bean定義ファイル(sample-servlet.xml)の作成
手順6:メッセージリソース(messages_ja.properties)の作成
手順7:完了画面(output.jsp)の作成

図3●プロジェクト構成
図3●プロジェクト構成

環境構築

◆プロジェクトの作成

 Eclipseでのプロジェクト作成からSpringMVCのセットアップまでは,「第4回 SpringMVCの基本を知る」をご参照ください。

◆ライブラリの用意

 環境設定が終わったら,必要なライブラリをダウンロードします。基本編で作成するサンプルに必要なライブラリは以下の通りです。以下のサイトから入手してください。

 解凍(展開)してできたjarファイルを,validateSample/WebContent/WEB-INF/libにコピーしてください。以上で環境構築は完了です。