Teeda の罠
Teeda にも罠があったのでメモ。JSF の仕様ならゴメンナサイ。
カスタムバリデータを作ろうと思って、エラーメッセージを FacesMessage オブジェクトで定義するときの罠です。
new FacesMessage("○○は△△でなければなりません")
とやると、
○○は△△でなければなりません ○○は△△でなければなりません
とメッセージが二重に表示されてしまいます。FacesMessage には summary と detail が設定できるのですが、この引数が 1 つのときのコンストラクタでは、summary にこの引数の値が入り、detail は null になります。しかし、Teeda では getDetail すると、detail が null のとき summary が返るようになっています。バリデータのエラーメッセージは、summary + detail になるので、この仕様だと summary が二重になるというわけです。ですので以下のようにすると罠を回避できます。
new FacesMessage("○○は△△でなければなりません", "")