問題は、ResultSet
withを表示した後<h:dataTable>
、接続が開いたままになることです。私がそれを閉じると、それも閉じResultSet
ます。ResultSet
データをいくつかHashMap
/ArrayList
コンボにコピーすることを考えています。この問題に対処する良い方法はありますか?
3 に答える
実際、常に取得して閉じる必要がありConnection
、可能な限り最短のスコープで (できれば、まったく同じメソッド ブロック内で既に)、DAO クラスの外にそれらを渡してはいけません。テーブルの各行を表すにをマッピングする必要があります。結果セットをマップする方法の基本的な例を次に示します。Statement
ResultSet
ResultSet
List<Data>
Data
List<Data> items = new ArrayList<Data>();
...
while (resultSet.next()) {
Data item = new Data();
item.setColumn1(resultSet.getString("column1"));
item.setColumn2(resultSet.getString("column2"));
items.add(item);
}
...
return items;
h:dataTable
次に、それを'svalue
属性で使用できます。
より多くの例と洞察については、次の記事の 1 つまたは両方が役立つ場合があります
。
dao-tutorial-data-layer.html
幸運を。
次のリンクを確認してください: http://www.coderanch.com/t/478265/JSF/java/Displaying-array-data-tables#2585794
私はあなたの問題を解決するのに役立つと確信しています
ResultDataSetModelを使用していますか? はいの場合は、javadoc にあることに注意してくださいNote that the specified ResultSet MUST be scrollable
。
Statement stmt=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultDataSetModelの使用例の完全な例を次に示します。