ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

JSP/JSFコミュの【質問】JSF HtmlSelectOneListboxについて

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。JSF初心者のSmokinと申します。
質問させてください。

環境
Tomcat 5.0
J2SDK 1.4.12
myfaces 1.3

以下の処理をするJSPがあります。
?myfacesのHtmlSelectOneListboxを使ったリストから単一の要素を選択させる。要素が選択された際にsubmitする。

?JSPでは、ListboxのプロパティvalueにバインドしたOutputTextがあり、再表示後こちらに選択された要素の値を表示する。

リストの選択肢は以下です。(labelとvalueは同値)
 "" (空文字)
 "ABC"
"−" (全角マイナス)

上記最初の二つはうまくいくのですが、全角マイナスはなぜかvalueにnullが設定されてしまい、リスト上何も選択されていない状態、OutputTextの方も何も表示していません。

JSPの文字コードはWindows-31Jです。

おそらく文字コード関連の問題かと思うのですが、
エラーが発生していないため、原因がなかなかつかめません。

Validationフェイズ終了後、UpdateModelValuesフェイズに行かず、RenderResponseフェイズに行ってしまいます。
Validationフェイズでは、processValidationメソッド終了後にSelectOneListboxのvalueにnullが設定されるのを確認しています。


原因・解決方法等ご存知の方がいらっしゃいましたらご教示お願いいたします。

コメント(3)

Validationエラーが発生しているのだと思います。
画面上にエラーメッセージを出すようにすれば
何かわかるんじゃないでしょうか。
shotさん、回答ありがとうございます。

書き忘れで申し訳ないのですが、
このプログラム、Validatorを登録していないので、このフェイズで呼び出されるvalidateメソッドでは何も処理をしていはずだと思います。
念のため、<h:messages>を入れてみたのですが、やはり何も出力されませんでした。

なお、このコンポーネントだけではなくて、他のコンポーネントでも似たような怪奇現象が出ました。

来週はJSPの文字コードをUTF-8に変えて試してみようと思っています。
とりあえずリクエストでなにが送られてきているかを表示させてみては?

力技ですが、
Filterで

public void doFilter(ServletRequest request, ServletResponse response,
 FilterChain chain) throws IOException, ServletException {
  for (Enumeration enu = request.getParameterNames(); enu.hasMoreElements();) {
   String param = (String) enu.nextElement();
   System.out.println(param + ":" + request.getParameter(param));
  }
 chain.doFilter(request, response);
}

とかを設定してみて、ちゃんとリクエストが送られてきているかどうかを見てみてはいかがでしょうか。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

JSP/JSF 更新情報

JSP/JSFのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング