JSFによるWebアプリケーション開発 第10回 コンバータ・バリデータ JSFによるWebアプリケーション開発 第10回
ここでの内容 コンバータ・バリデータの手法について学ぶ。
コンバータ
コンバータとは何か h:inputText 要素のようなテキスト入力フィールドには、基本的には String 型のデータが入る。 コンバータとは、テキスト入力フィールドと Managed Beanのプロパティ間でデータ変換を行うもの。 例えば、Integer や Date 型に変換 Integer や Date 型のオブジェクトの値を、h:outputText などで出力
Managed Bean // number プロパティは Integer 型 public Integer getNumber() { return number; } // date プロパティは Data 型 public Date getDate() { return date;
このサンプルの出力例
number プロパティと UIコンポーネントとの対応 (1) <h:inputText id="number1" converter="javax.faces.Integer" value="#{ParameterBean.number}“ /> <h:outputText id="number2" value="#{ParameterBean.number}" />
number プロパティと UIコンポーネントとの対応 (2) converter="javax.faces.Integer“ value="#{ParameterBean.number}“ 入力されたデータを、Integer 型に変換するコンバータを指定する。 データは、ParameterBean の number プロパティに保存する。
JSF標準のコンバータ BigDecimalConverter BigIntegerConverter BooleanConverter ByteConverter CharacterConverter DateTimeConverter DoubleConverter FloatConverter IntegerConverter LongConverter NumberConverter ShortConverter
次のコンバータは 記述を省略できる BooleanConverter ByteConverter CharacterConverter DoubleConverter FloatConverter IntegerConverter LongConverter ShortConverter
number プロパティと UIコンポーネントとの対応 (3) <h:inputText id="number1" value="#{ParameterBean.number}“ /> converter属性は省略できる。
date プロパティと UIコンポーネントとの対応 (1) 日付を入力してください (例 04/08/09): <h:inputText id="date1" value="#{ParameterBean.date}"> <f:convertDateTime dateStyle="short" /> </h:inputText>
date プロパティと UIコンポーネントとの対応 (2) <h:outputText id="date2" value="#{ParameterBean.date}"> <f:convertDateTime dateStyle="full" /> </h:outputText> 「2004年8月9日 (月曜日)」というように表示される。
出力例
カスタム・コンバータ コンバータは、自分で作成することもできる。
バリデータ
バリデータとは何か 入力されたデータが、そのアプリケーションに適合するものかどうかチェックする機能。例えば・・・ ここは必須項目なので、必ず入力しなければならない。 ここには、1~10までの数が入る 適合しなかった場合は、エラーメッセージを表示できる。
バリデータに適合する場合の 出力例
バリデータに適合しない場合の 出力例
JSF標準のバリデータ DoubleRangeValidator LengthValidator LongRangeValidator
必須項目のチェック お名前を入力してください(必須): <h:inputText id="name1" required="true" value="#{ParameterBean.name}" /> データが入力されていないとエラーになる。
h:message 要素 <h:inputText id="name1" required="true" value="#{ParameterBean.name}" /> <h:message for="name1" /> エラーメッセージを表示するUIコンポーネント for 属性で指定した UIコンポーネントに関するエラーメッセージを表示する。
文字列の長さのチェック (1) 電話番号を入力してください(10文字以上): <h:inputText id="tel1“ value= "#{ParameterBean.telephoneNumber}"> <f:validateLength minimum="10" /> </h:inputText> <h:message for="tel1" />
文字列の長さのチェック (2) <f:validateLength minimum="10" /> 文字列の長さをチェックするバリデータ 最小でも10文字は必要になる。 ほかに、maximum 属性もある。最大で何文字までかチェックする
数の範囲のチェック (1) 品物の数を入力してください(1~10): <h:inputText id="quantity1" value="#{ParameterBean.quantity}"> <f:validateLongRange minimum="1" maximum="10"/> </h:inputText> <h:message for="quantity1" />
数の範囲のチェック (2) <f:validateLongRange minimum="1" maximum="10"/> 整数の数の範囲をチェックする。 1 ~ 10 までの範囲となる。それ以外だとエラーになる。
バリデータに適合する場合の 出力例
バリデータに適合しない場合の 出力例
カスタム・バリデータ バリデータは、自分で作成することもできる。