SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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


  • X ポスト
  • このエントリーをはてなブックマークに追加

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

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

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

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

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」という名前にします。

次のページ
プロパティファイルの参照順序

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
作りながら学ぶJavaアプリケーションフレームワーク連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2572 2008/08/14 18:32

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング