JSF2.xでBeanValidationのグループを設定してValidationを切り替える
JSFの組み込み機能だけ使うとこんな感じらしい。
JSF2.xでValidationグループを設定する
<!-- ISBNコードの入力(登録時) --> <h:inputText id="isbn" value="#{bookController.book.isbn}" label="ISBNコード"> <f:validateBean validationGroups="validation.groups.BookEntryGroup" /> </h:inputText> <!-- タイトルの入力(登録時) --> <h:inputText id="title" value="#{bookController.book.title}" label="タイトル"> <f:validateBean validationGroups="validation.groups.BookEntryGroup" /> </h:inputText>
タグごとにf:validateBeanを指定することで、Validationを行うことが出来る。
Validationを切り替えたい場合は全てのタグにf:validateBeanを記載してあげなければいけない(ギャー)
-
-
-
- -
-
-
(追記)
そんなことなかった!
f:validateBeanでh:inputTextを囲んでも有効だそうです。
-
-
-
- -
-
-
#OmniFaces
JSFのデフォルトだとあれな感じだったけれどもOmniFacesを使用すれば以下の様な感じでボタンにp:validateBeanを書いておけばやってくれるらしい。
http://showcase.omnifaces.org/validators/validateBean
俺達が欲しかったのはこれだ感があり。
##どうやっているのか
PhaseListenerを利用して、beforePhaseでvalidationGroupを切り替えて、afterPhaseで元に戻すということをやっているらしい。
BeanValidationEventListener
これとValidateBeanクラスを移植すればだいたい事足りるっぽいけれども、さて。