ひこぽんのーと

覚書と雑記です。

JavaEE 7をやってみよう。 validator その1

JSFのバリデータを使ってみる。
JSFには標準のバリデータがいくつか用意されている。

バリデータ名 機能
f:validateLength 文字数チェック
f:validateRegex 正規表現による文字チェック
f:validateRequired 必須入力チェック
f:validateLongRange 整数値範囲チェック
f:validateDoubleRange 実数値範囲チェック

また、自前でバリデータを作成することもできる。
汎用的なバリデータクラスを作る、
Managed Beanに固有のバリデートメソッドを作る
とふた通りのパターンがある。

まずは、標準のバリデータの使いかた。
入力後、フォーカスが外れたタイミングでチェックし、
エラーの場合、エラーメッセージを表示する。

<h:outputLabel value="0文字以上、8文字以下、半角英数字チェック" /><br />
<h:inputSecret id="text1" value="#{inputDataV.text1}" validatorMessage="0文字以上、8文字以下、半角英数字で入力せよ">
    <f:validateLength minimum="0" maximum="8" />
    <f:validateRegex pattern="[0-9A-Za-z]+" />
    <f:ajax render="text1error" event="blur" />
</h:inputSecret>
<h:message for="text1" id="text1error" style="color: red" />

inputSecretやinputTextなどのinput属性に変換されるタグの子要素として記述する。
この例では文字数チエックで、0文字以上、8文字以内、
文字種のチェック(正規表現)で半角英数字を許容している。
バリデータを使用する際、バリデータエラーを表示することになると思うが、
エラーメッセージを表示するには、h:messageタグを使う。
h:messageタグのfor属性にチェック対象のidを指定する。
チェックを実施するタイミングをf:ajaxタグを使って記載する。
event属性にタイミングを指定する。clickとかblurとかvalueChangeとか。
rendar属性に描画するオブジェクトのid(この場合、messageタグ)を指定する。

実行するとこんな感じ。
その2へつづく。
f:id:nagamitsu1976:20150730153619p:plain