プロが教えるわが家の防犯対策術!

Validatorや、その他必須チェック等、エラー発生時にJSFのmessagesタグを使って画面にエラーを表示させています。複数エラーが発生する時、入力項目順に(画面表示項目の上から下へ向かって)エラー項目を出力させたいのですが、順不同で出力されてしまいます。messagesのオプション等でエラーの順序を制御できないでしょうか?

A 回答 (1件)

<h:messages>には、表示するメッセージの並び順などに関するオプションはないようです。

従って、どうしてもというならそういうUIコンポーネントをカスタムで定義するか、あるいは手作業でメッセージを取り出し出力する処理を用意するしかないでしょう。
 JSFでは、メッセージはすべてFacesContextが管理しています。これはFacesContext.getCurrentInstanceで取得できます。
 このFacesContextのgetMessagesで、用意されている全メッセージをIteratorとして取得できます。そこから順次FacesMessageを取得し、それらをチェックして並び順などを整えるか(あるいは配列などにしてソートするか)して出力するしかないでしょう。詳細はJSFのドキュメントをご覧になって下さい。
(自分ならどうするか考えたのですが、カスタムコンポーネントを定義するのはちょっと面倒くさいのでやめて、メッセージを表示するカスタムタグを定義してそれを利用するんじゃないかと思います)

参考URL:http://java.sun.com/j2ee/javaserverfaces/1.2/doc …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!