1

問題は、ResultSetwithを表示した後<h:dataTable>、接続が開いたままになることです。私がそれを閉じると、それも閉じResultSetます。ResultSetデータをいくつかHashMap/ArrayListコンボにコピーすることを考えています。この問題に対処する良い方法はありますか?

4

3 に答える 3

4

実際、常に取得して閉じる必要がありConnection、可能な限り最短のスコープで (できれば、まったく同じメソッド ブロック内で既に)、DAO クラスの外にそれらを渡してはいけません。テーブルの各行を表すにをマッピングする必要があります。結果セットをマップする方法の基本的な例を次に示します。StatementResultSetResultSetList<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

幸運を。

于 2009-11-12T13:02:56.267 に答える
1

次のリンクを確認してください: http://www.coderanch.com/t/478265/JSF/java/Displaying-array-data-tables#2585794

私はあなたの問題を解決するのに役立つと確信しています

于 2012-03-01T07:37:28.463 に答える
1

ResultDataSetModelを使用していますか? はいの場合は、javadoc にあることに注意してくださいNote that the specified ResultSet MUST be scrollable

Statement stmt=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

ResultDataSetModelの使用例の完全な例を次に示します。

于 2009-11-12T13:09:42.647 に答える