メッセージの日本語化
しかし実際に使ってみると、このバリデーションには少々問題があることに気が付くでしょう。それは「メッセージがすべて英語である」という点です。このままではちょっと使いにくいので、メッセージを日本語化しましょう。
Stripesで使用されるメッセージ類は、「StripesResources.properties」というプロパティファイルにまとめられています。今回、必要となるメッセージは以下の部分になります。
stripes.errors.header=<div style="color:#b72222; font-weight: bold">Please fix the following errors:</div><ol> converter.number.invalidNumber=The value ({1}) entered in field {0} must be a valid number validation.required.valueNotPresent={0} is a required field validation.minlength.valueTooShort={0} must be at least {2} characters long validation.maxlength.valueTooLong={0} must be no more than {2} characters long validation.minvalue.valueBelowMinimum=The minimum allowed value for {0} is {2} validation.maxvalue.valueAboveMaximum=The maximum allowed value for {0} is {2}
それぞれ3箇所に分かれて記述されているので、よく探してみてください。そしてこれらの値を、分かりやすい日本語に書き換えてみましょう。
stripes.errors.header=<div style="color:#b72222; font-weight: bold">※以下の入力ミスがあります。</div><ol> converter.number.invalidNumber=入力された"({1})"は不正な値です。{0}には整数が必要です。 validation.required.valueNotPresent={0}が入力されていません。 validation.minlength.valueTooShort={0}は{2}文字入力してください。 validation.maxlength.valueTooLong={0}は{2}文字以下にしてください。 validation.minvalue.valueBelowMinimum={0}は、{2}以上の値が必要です。 validation.maxvalue.valueAboveMaximum={0}は、{2}以下の値が必要です。
![再びフォームを送信してみる。今回は、エラーメッセージはすべて日本語で表示されるようになった](http://cz-cdn.shoeisha.jp/static/images/article/5249/7.gif)
これでエラーメッセージも日本語に変わります。この種のリソースファイルは使用言語に合わせてローカライズしたファイルを用意していくものですが、今回は「このようにファイルを書き換えればシステムのメッセージも簡単に変えられる」という一例として考えてください。
メッセージを整理する
このサンプルでは、エラーメッセージはすべてまとめてフォームの上に表示されました。これをもう少し整理し、各フィールドの下に表示されるようにしてみましょう。これは、JSPの記述を少し修正するだけで行えます。
<stripes:form beanclass="jp.codezine.HeloActionBean"> <table> <tr> <td>Result:</td> <td>${actionBean.result}</td> </tr> <tr> <td>TEXT:</td> <td><stripes:text name="TEXT" /><br> <stripes:errors field="TEXT"/></td> </tr> <tr> <td>NUMBER:</td> <td><stripes:text name="NUMBER" /><br> <stripes:errors field="NUMBER"/></td> </tr> <tr> <td colspan="2"> <stripes:submit name="submit" value="Submit" /> </td> </tr> </table> </stripes:form>
![各フィールドごとにエラーが表示されるようになる](http://cz-cdn.shoeisha.jp/static/images/article/5249/8.gif)
先ほどのサンプルでは、フォームの冒頭に<stripes:errors />というタグを用意しましたが、ここでは各フィールドのタグの後に用意しています。それぞれにfieldという属性を用意することで、指定したフィールドでのエラーに絞って表示をするようにしているのです。これでようやく実用的なフォームになったと言えそうです。
まとめ
今回はStripesの導入編として、Webアプリケーションの基本的な構成から、ごく簡単なフォームを使ったやりとりまでを一通り説明しました。ごく基本部分だけしか説明できませんでしたが、StripesによるWebアプリケーションというのがどのような形で作成されるのか、全体的なイメージぐらいはつかめたことでしょう。
Stripesの働きを整理するなら「フィルタを使い、JSPの独自タグとActionBeanを連携して動かすための仕組みを提供するもの」と言えるでしょう。独自に定義されたタグを使ったJSPの作成は、JSP利用者にはなじみのあるものですし、Beanの設計もごくシンプルなクラス定義に過ぎず、特殊な設定ファイルや命名ルール、複雑なメソッドの実装などはまったくありません。ごくありふれたシンプルなコードを書くだけで、コントローラーとビューがきれいに分離されたしっかりとしたWebアプリケーションが作成できます。このシンプルさは、他に見られないものではないでしょうか。まさに「軽量フレームワーク」の名を冠するにふさわしいソフトウェアと言えるでしょう。