• ベストアンサー

JSFのmessagesタグによる、エラー表示順序

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

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

参考URL:
http://java.sun.com/j2ee/javaserverfaces/1.2/docs/api/index.html

関連するQ&A