SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Java EE 6 開発入門

JSF2+Ajaxの非同期通信を使った入力値の検証機能

JavaEE6 開発入門(5)

ダウンロード SampleWebApp.zip (19.4 KB)

Ajaxの非同期通信を使った検証機能を利用する

 旧来のJavaWebアプリケーションの場合、検証機能は画面に表示されている入力項目全てに対してサーバサイドで行い、その結果を受けてもう一度再描画しなければならない場合や、JavaScriptを使ったクライアントサイドの入力チェック機能を作成する必要がありました。いずれにせよ結構な手間が必要になりますが、JSF2のAjax利用をした検証機能はそういった手間から解放され、また複雑なJavaScriptやコードを追記することもありません。JavaEEコンテナが自動的に必要なコードを内部で生成し、非同期通信の部分も機能提供します。実装したManagedBeanやFaceletsに対して特殊なコードが付加されることもありません。

 利用の方法はいたって簡単で、検証機能をつけた入力コンポーネントに対して、<f:ajax>タグを子要素に持たせるだけです。

[リスト3]検証機能にAjax非同期通信を盛り込んだ例
<h:inputSecret id="password" value="#{user.password}"
   validatorMessage="パスワードは5~16文字の間で入力してください">
    <f:validateLength minimum="5" maximum="16"/>
    <f:ajax render="passwordError" event="blur"/> … (1)
</h:inputSecret>
<h:message for="password" id="passwordError" style="color: red"/>

 先ほどのパスワードのチェックに対して、(1)の<f:ajax>1行を追加するのみです。render属性でメッセージの出力先のidを持つ<h:message>を指定します。さらにその入力項目に対してどの操作をしたときに動作するかをevent属性で定義します。eventに定義できる内容はJavaScriptで検出するonclickがclickに対応しており、XHTMLのイベント名称に由来しています(※注意)。

 なお、定義できるイベントは1つの入力項目に対して1種類のみです。

表3 event属性に指定できるイベント一覧
キーワード イベントチェックするタイミング
blur 入力項目に対してフォーカスがはずれた時
change プルダウンリストで利用される。入力値が変更された時
click 入力項目がクリックされた時
dblclick 入力項目がダブルクリックされた時
focus 入力項目がフォーカスされた時
keydown 入力項目上でキーボードのキーを押した時
keypress 入力項目上でキーボードのキーを押してから離した時
keyup 入力項目上でキーボードのキーを離した時
mousedown 対象項目上でマウスをクリックした時
mousemove 対象項目上でポインタが動いた時
mouseout 対象項目からポインタがはずれた時
mouseover 対象項目にポインタが入った時
mouseup 対象項目上でマウスをクリックして、離した時
select 入力項目内のテキストが選択された時
valueChange JSF独自イベント。指定した項目の値が変更されていた場合に実行される(ラジオボタンやチェックボックスに利用)
※注意

 XHTMLのイベント属性については、w3g.jpのイベント属性(イベントハンドラ)のページを参考にしてください。

 今回のサンプルではテキスト入力した後、フォーカスがはずれたタイミングでチェックを行うblurを全ての入力項目に対して設定しています。これにより、入力項目に対して入力し終えて他の項目へ移った直後に入力値の検証を行い、その結果が即時表示されます。入力項目の多い画面では特に有効でしょう。他にも入力項目の即時検証で使われるのはkeypressで、これは項目に対して入力している最中に入力値の検証が行われます。用途に合わせてチェックするイベントを選択しましょう。

 今回のサンプルアプリケーションは次のような画面になっています。入力項目として、ユーザID、パスワード、メールアドレス、年齢の4項目を用意し、それぞれに検証機能として、必須入力チェック、入力文字列の長さチェック、拡張された検証の利用などを盛り込んでいます。検証機能が動くタイミングは全てblurで統一しており、項目からフォーカスが離れたタイミングで動作するようにしています。

図1 サンプルアプリケーション起動後の画面
図1 サンプルアプリケーション起動後の画面

次のページ
検証機能を拡張する

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

Java EE 6 開発入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト 東 浩二(アズマ コウジ)

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6241 2011/11/07 14:00

イベント

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

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

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

メールバックナンバー