サーバー側 JavaServer Faces 妥当性検査: デザインの詳細

ここでは、java.net 主催の bpcatalog プロジェクトで提供している妥当性検査アプリケーションを例に対処法を説明します。

このアプリケーションでは、JavaServer[tm] Faces テクノロジを使用して、クライアント側 JavaScript[tm] 妥当性検査とサーバー側 JavaServer Faces 妥当性検査の両方の妥当性検査に関する複数の対処法を紹介します。

クライアント側妥当性検査

index.jsp ファイルにはまた、フィールドの色フィールドの内容を妥当性検査する JavaScript も含まれています。クライアントブラウザが JavaScript をサポートしていないか、JavaScript が無効にされている場合、クライアント側妥当性検査は機能しません。妥当性検査で問題が起きると、ブラウザは Web アプリケーションにフォームを送信しません。このため、時間やリソースの消費になるラウンドトリップが抑制されます。アプリケーションは、必ず、クライアント側妥当性検査が行われたかどうかに関係なくサーバー側妥当性検査を行うようにデザインすることを推奨します。

サーバー側妥当性検査

このアプリケーションは、index.jsp および response.jsp ファイルの 2 つの JavaServer Faces ページで構成されています。このうち index.jsp ページには、1 つのページにすべての JavaServer Faces コード例が含まれています。ページ内のデータが有効である場合は、response.jsp ページに要求が送信され、妥当性検査で問題が起きた場合は、index.jsp に戻ってエラーメッセージが表示されます。

ValidatorBean とは、ページで使用される妥当性検査コードを含む管理対象 Bean です。index.jsp ページ内の次の JavaServer Faces コードは、メソッドバインド表現を使用して、ValidtorBean で validate メソッドを呼び出します。
    <h:inputText id="smallNumber" value="#{ValidatorBean.smallNumber}"
validator="{JSFValidator.validate}"/>

ValidatorBean から抜粋した次のコードは、JavaServer Faces を処理するときに呼び出されます。

 public void validate(FacesContext context,
UIComponent component,
Object value) throws ValidatorException {

if ((context == null) || (component == null)) {
throw new NullPointerException();
}
if (value != null) {
if (((String)value).equals("blueprints")) {
throw new ValidatorException(new FacesMessage("blueprints is invalid"));
}
}
}

© Sun Microsystems 2005. All of the material in The Java BluePrints Solutions Catalog is copyright-protected and may not be published in other works without express written permission from Sun Microsystems.