category: Java
DATE : 2007/05/11 (Fri)
DATE : 2007/05/11 (Fri)
(;^ω^)しばらく JSF を使ってきたのですが、今日はじめて Validator を複数重ねられることに気付きました。
例えば、入力形式(数字の間にハイフンが入っているなど)を検証する formatValidator とそれが今回はじめて入力されたものかどうかを検証する uniqueValidator を用意したとします。
すると、data の value プロパティに前述の検証を行ってから入力値を格納するテキストフィールドは次のように書けます。
<h:inputText value="#{data.value}"> <f:validator validatorId="formatValidator" /> <f:validator validatorId="uniqueValidator" /> </h:inputText>
JSF 1.2 の仕様書にも次のように書いてありました。(「JavaServer Faces Specification Version 1.2 Final Draft」p.3-34 から引用)
JSF supports a mechanism for registering zero or more validators on each EditableValueHolder component in the component tree.
javax.faces.component.EditableValueHolder は、編集可能な値を保持するコンポーネントが実装しているインタフェースです。javax.faces.component.html.HTMLInputText などの javax.faces.component.UIInput が実装しています。そのため、仕様上、入力用の UI コンポーネントは0から複数の Validator を使用できることになるわけです。
(;^ω^)私の見た入門書やサンプルコードには Validator を1つしか使用しないものしかなかったため、頭の中に Validator は1つという図式ができあがっていたようです。
参考文献
PR
●この記事にコメントする
忍者ブログ [PR]