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 版のソースコードが載せられないのが残念です。
No.1ベストアンサー
- 回答日時:
h:dataTableタグはコレクション(List,配列など)のデータを
表にして表示するUIコンポーネントですからリスト型の物でないと
表示できないかと思います。
参考URL:http://www.wakhok.ac.jp/~tomoharu/jsf2004/text/i …
この回答への補足
残念ながら、自分で答えを見つけてしまいました。
ある意味、この回答は正しいと思われます。
JSFの実装には、いくつか種類があるそうです。
私は一つしかないと思って Myfaces という実装を使用していました。
しかし、現在JSF実装のデファクトスタンダードは、「Mojarra(マハーラ)」という実装だそうです。
Myfaces は、いくつか不具合もあり速度も遅いなど問題のある実装だそうです。
商用のアプリケーションサーバのJSFもほとんど Mojarra だそうです。
私の「ResultSet で、<h:dataTable>表示できない」問題も、「もしかしたら Myfacesの不具合かも知れない」と思い、JSF実装を Mojarra に入れ替えてみました。
すると、案の定 ResultSet で <h:dataTable> 表示ができるようになりました。
原因は、Myfaces の不具合でした。
これからJSFを勉強する人は、JSF実装には Mojarra を使用することをお勧めします。
私のように無駄な苦労をしない為に。
回答者の回答の「リスト型の物でないと表示できない」という回答もMyfaces においては正しいのです。
しかし、Mojarra においては当てはまりません。
とりあえず、原因がわかったので、この回答をベストアンサーに選んで終了したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
C# ListBoxのインデックスの値...
-
[JAVA]try 内の変数を外で!?
-
VBAで配列の計算
-
【Java8以降】csvファイルの複...
-
プログラミングの問題です。大...
-
オブジェクトの中のプロパティ...
-
JPanelの切り替えと再描画
-
Java 読み込んだテキストファイ...
-
eclipseでコンソールのピン留め...
-
JAVA 文字色変更
-
10進数を4桁のバイト配列に格納...
-
csvファイルを2次元配列に格納
-
配列 変数の宣言 VBA
-
equalsの逆
-
Path型をString型へ変換する(Java)
-
初心者なので教えてほしいです。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
getStringの値がNULLの時の処理
-
eclipseでoracle接続時のエラー...
-
例外でBeanUtils.populateが、...
-
C#でラジオボタンとコンボボッ...
-
逆コンパイルの見方について(...
-
gas カレンダー祭日設定でエラー
-
C# ListBoxのインデックスの値...
-
jsp/Servletの動的に増えるフォ...
-
入力された文字列の制限
-
Tomcatを再起動するとエラーが...
-
if文を通らない
-
日付をyyyyMMddで取得したい。
-
java DAO 日付指定フォーマット...
-
Javaでboolean型を使ってのうる...
-
JSPで複数のSQL実行につ...
-
Stringを返す getText()メソッ...
おすすめ情報