CodeZine(コードジン)

特集ページ一覧

Struts 2入門(3)~バリデーションの仕組みを理解する(後編)~

作りながら学ぶJavaアプリケーションフレームワーク

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/06/23 14:00
目次

プロパティファイルによるメッセージ管理

 実は、プロパティファイルで定義できるメッセージは、変換エラーのみに限ったことではありません。他のエラーメッセージや、通常のメッセージ、文字列をプロパティファイルで定義したものに置換することができます。プログラム中ではメッセージをキーで扱い、実際に表示するための文字列は外部ファイルに持つことができるわけです。

バリデーションのエラーメッセージ

 前回のバリデーションのエラーメッセージを、プロパティファイルによる定義に変更するには、次のようにします。キーの名前は任意です。

Research-ResearchConfirm-validation.xmlを変更
<!-- 1.名前フィールドの必須入力チェック -->
<field name="name">
    <field-validator type="requiredstring">
        <message key="errors.required.name"/>
    </field-validator>
</field>
Research.properties
errors.required.name=名前を入力してください

 バリデーションをアノテーションで記述した場合でも、ActionSupportクラスで提供されているgetTextというメソッドを利用すれば、プロパティファイルからメッセージを取得できます。

Research.javaのアノテーションの一部
@Validations(
        requiredStrings = {
            @RequiredStringValidator(
                fieldName="name",
                message="${getText('errors.required.name')}" )
        }
)

プログラムでプロパティファイルを扱う

 また、getTextメソッドは、当然ながらアノテーションだけでなくプログラム中に記述できます。

getTextの例
    public void validate() {
        if ( name == null || name.length() == 0 ) {
            addActionError( getText("errors.required.name") );
        }
    }

JSPファイルでプロパティファイルを扱う

 JSPでのカスタムタグでも、プロパティファイルを参照できるものがあります。この場合のプロパティファイルは、JSPファイルを呼び出すActionクラスが管理するものを指します。

国際化文字列の表示タグ
<s:text name="some.key" />

 上記は、キーを指定してプロパティファイルの値をそのまま表示するタグです。

テキスト入力のラベル表示
<s:textfield key="some.key" name="textfieldName"/>

 こちらは、テキスト入力のラベルにプロパティファイルの値を使用します。

 以上のタグ以外でも、getTextメソッドを使えばラベル部分などにプロパティファイルの文字列が使えます。

getTextの例
<s:property value="getText('some.key')" />

国際化への対応

 上記のプロパティファイル参照方法は国際化(i18n)にも対応しています。JSPと同様に、接続ユーザーのロケール情報を利用して自動的にロケールに対応したプロパティファイルを読み込むことができます。

 Struts 2でも、プロパティファイルの命名規則は、「プロパティファイルのベース名_言語コード_国コード_地域コード.properties」となります。例えば前述のプロパティファイルで、英語であれば「ResearchWithValidation_en.properties」という名前にします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:作りながら学ぶJavaアプリケーションフレームワーク

もっと読む

著者プロフィール

  • WINGSプロジェクト 高江 賢(タカエ ケン)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5