• ベストアンサー

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

  • JSF バリデーション 日本語メッセージについて

    はじめまして初心者です、よろしくお願いします。 JSFの<h:messages>タグで表示させるエラーメッセージを自作メッセージに変えたいのですが、どのファイルを編集すればいいのでしょうか? 現在はinputTextタグに「required="true"」を指定していますが、「バリデーションエラー」とだけ表示されています。 「Messages_ja.properties」を作成しましたが、置き場所がおかしいのか定義したメッセージは表示されませんでした。こちらの置き場所も合わせてお教え頂けるとありがたいです。 現在は「src/main/webapp/messeage/Messages_ja.properties」に配置しています。 JSFのバージョンは1.14です。

    • ベストアンサー
    • Java
  • 「お気に入り」の表示順序が崩れ戻らない

    インターネット画面の「お気に入り」の表示項目の順序を、 使い勝手が良いように並べて固定的に利用していたが、 ある時から、多分、自分で何かをした結果、 その表示順序が崩れ、何度修正しても、修正した順序が維持できず、 崩れた表示順序になります。 「お気に入り」の表示項目を並び替え固定的に使用する方法を 教えてください。

  • データ表示順序

    SQLを使用したデータの表示順序に関する質問です。 Order by 句を指定して表示をさせているのですが、 指定したOrder by 句の項目が全て同一な場合、 どういった順序で表示されるのでしょうか? 基本的には、 データをINSERTした時のINSERT順と考えていますが、 OracleのROWNUM等の絡みで必ずしもINSERT順ではないのですよね・・?? どなたかご存知でしたら教えてください。

  • messagesにdaemon errorが多発

    Solaris8を使用しているのですが、messages上にのdaemon errorが発生します。 Aug 24 09:41:52 ms rsh[11586]: [ID 365563 daemon.error] can't get stderr port: Cannot assign requested address 構成はマスターサーバ(エラーが発生している)配下に8台のクライアントサーバ(OSはSolaris8)が存在しています。 このエラーが表示されているのもの、システムには影響がない?ように見えているのですが、どのようなエラーなのでしょうか? また、改善方法があれば教えて頂けないでしょうか。 宜しくお願い致します。

  • SA Strutsのエラー表示について

    JAVA初心者です。 SA Strutsでのバリデーションエラーについて質問させて頂きます。 ある項目をマスタに存在しない場合にエラーメッセージと エラーになった項目の色を変えたいのですが、 メッセージは、「ActionMessages」で取得して表示できました。 エラーになった項目の色を変えるには、独自Validatorを作らないと行けないでしょうか? 何卒、ご教授をお願いします。 以下ソースです。 ■serch.action @Execute(validator = false) public String submit(){ ActionMessages messages = new ActionMessages(); /* キーからメッセージ取得 */ message = MessageResourcesUtil.getMessage("ERR0001"); /* 分類マスタに存在するかチェック */ categlycheck = modelCategly1Service.bunruichck(studyForm.bunrui); if ( categlycheck == false){ /* 分類マスタに存在しなければメッセージ表示 */ messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("ERR0001")); ActionMessagesUtil.addErrors(RequestUtil.getRequest(), messages); } return "index.jsp"; } ■index.jsp <html:errors/> <s:form > <table border="1"> <tr> <td>商品分類</td> <td> <html:text property="bunrui" errorStyleClass="err" /> </td> </tr> </table> <table> <tr> <input type="submit" name="submit" value="サブミット"></input> </tr> </table> </s:form> </body> </html>

  • JSFでの複数選択ボタン遷移方法に関して

    JSFでの複数選択ボタンの遷移方法に関してご質問致します。 JSFでの複数選択ボタンの遷移でチェックを入れるとチェックをいれたものにはtrueと表示され、いれないものにはfalseしか次画面で表示されません。 DTOでセッターとゲッターをbooleanで設定しているだけなので、当然の結果なのですが、DTO内にこの複数選択項目だけfor文でソースを書けば 選択したチェックボックス(の名称)が次画面に表示されますでしょうか? eclipse3.1 JSF java の環境です。 何卒、宜しくお願いします。

  • strutsのactionタグinput

    strutsのvalidatorを使用するため 「struts-config」のactionタグに以下の修正を入れると思います。  ・validate = true  ・input  = "エラー時に遷移するページ" 上記の修正後、実行すると 画面の初期表示時に、どうやらinputで指定した画面に遷移してしまいます。 エラー時に遷移するための指定かと思ったのですが 画面初期表示時にも読み込まれるのでしょうか? 画面表示で分割して表示している所為でしょうか? ・validatorでのエラーはポップアップで表示したいと思っています。 ・該当する1画面表示に対しての配置は以下になります。  (1)Menue.html   -(2)Top.jsp※共通なヘッダ部分   -(3)Main.html     -(4)Init.jsp※検索結果表示部分     -(5)Search.html       -(6)Search_Up.html※上部の表示部分       -(7)Sarch_In.jsp※検索条件入力部分 ※初期表示は(1)の画面で、validatorを使用するのは(7)の画面です。 (7)の画面には以下を追加しました。  追加⇒<html:javascript formName="対象Form名"/>   <html:form action="actionのpath名.do?   action=search" method="post" target="view"  追加⇒onsubmit="return validate対象Form名(this)"> 1つの画面に対して細かく資産を分けてしまうと validatorを利用する際にうまく画面遷移が出来ないのでしょうか?

  • Windows7 ログオン画面に表示されるアイコンの順序を変更したい。

    Windows7 ログオン画面に表示されるアイコンの順序を変更したい。 Windows7にログオンする際に、予め設定されたアカウントに対応するアイコンが並んで表示されていますが、この順序を変更する方法はありますでしょうか? 一番良く使うアカウントアイコンを左側に表示したいのですが、 テストした所ではアルファベット順でも、アカウントの作成順でもないようで、対応に苦慮しております。 どうぞ宜しくお願い申し上げます。

  • java & JSF1.2 についての質問です。

    java & JSF1.2 についての質問です。 私は、JavaとJSFを勉強中のプログラマです。C,C++,C#,php,SQL 等の技術的知識は多少あります。 しかし、Java と JSF については初心者です。 <質問概要> JSFの勉強のために、簡単な電子掲示板プログラムを開発しているのですが、 クエリー(SQL)の結果を JSF の <h:dataTable> に関連付けて表示する処理がうまく動きません。 クエリーの結果は8レコードのデータを返しているのに、<h:dataTable>には一件も表示されないのです。エラーも出ません。 <開発環境> OS:WindowsXP SP3 JDK 1.5.0 Apache Tomcat v6.0 JSF 1.2(Apache Myfaces JSF Core-1.2 API 1.2.9) <問題のソースコード> [BbsBeanMain.java] Bean のソースコード public Connection con = null; public Statement state = null; private ResultSet rsList; public ResultSet getRsList() { this.setRsList(); return this.rsList; } public void setRsList() { try{ Class.forName("com.mysql.jdbc.Driver"); this.con = DriverManager.getConnection("jdbc:mysql://localhost/bbs", "root", "mtdvd1208"); this.state = this.con.createStatement(); String strSQL; strSQL = "select Thread_ID, Thread_Title, Thread_Date from T1_Thread "; strSQL += "order by Thread_Date desc "; this.rsList = this.state.executeQuery(strSQL); } catch(Exception ex){ System.out.println("Error BbsBeanMain.setRsList ex=" + ex); } } [main.jsp] JSP のソースコード <h:dataTable id="ttbl1" value="#{BbsBeanMain.rsList }" var="rs" headerClass="ttbltr" columnClasses="ttblcol1,ttblcol2" > <h:column> <f:facet name="header"> <h:outputText value="スレッド" /> </f:facet> <h:form id="threadnamefrm"> <h:inputHidden id="threadid" binding="#{BbsBeanMain.ihThreadID }" value="#{rs.Thread_ID }" /> <h:commandLink action="#{BbsBeanMain.mDispThread }"> <h:outputText id="id1" value="#{rs.Thread_Title }" /> </h:commandLink> </h:form> </h:column> </h:dataTable> <h:messages /> <ソースコード解説>  上記 ResultSet オブジェクトの内容を、ArrayList に乗せ変えてやると正常に表示します。  私が知りたいのは、なぜ ArrayList で動くものが、ResultSet では動かないのか?という点です。  ヒントだけでも結構です。何か知っている方がいらっしゃれば、教えてください。  お願いします。  質問文の最大文字数が少なすぎて、正常に動作する ArrayList 版のソースコードが載せられないのが残念です。

    • ベストアンサー
    • Java
  • 写真を撮影した順序に並び替えたい

    WindowsXPでは、フォルダに入れた写真を撮影した順序の並び替えるのがすぐにできましたが、Vistaではやり方がわかりません。写真に名前をつけた後で、常に一回の操作で、撮影した順に写真の並び替えができるよう、My Computer画面にその項目を出しておきたいのですが、方法を教えてください。