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 版のソースコードが載せられないのが残念です。
お礼
ありがとうございます。やってみます。