我想使用sql查詢從數據庫中提取值來填充selectOneMenu組件。 查詢僅返回,我想進入的值selectOneMenu用於來自sql查詢的JSF selectItems值
我得到java.lang.IllegalArgumentException異常與堆棧開始商店名稱:
java.lang.IllegalArgumentException at com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:216)
at com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762)
這是我的XHTML代碼(這是唯一使用的selectItems的):
<h:selectOneMenu id="storeName" value="#{shoplist.store}">
<f:selectItems value="#{buyHistory.stores}" />
</h:selectOneMenu>
這是buyHistory豆查詢:
public ResultSet getStores() throws SQLException {
...
PreparedStatement getStores = connection.prepareStatement(
"SELECT distinct STORE_NAME "
+ "FROM BuyingHistory ORDER BY STORE_NAME");
CachedRowSet rowSet = new com.sun.rowset.CachedRowSetImpl();
rowSet.populate(getStores.executeQuery());
return rowSet;
}
我在做什麼錯?我應該以某種方式從resultSet轉換爲SelectItem數組/列表?
謝謝!什麼是一個好的設計?可以創建單獨的類來執行SQL查詢,並讓JSF託管的bean調用它們的方法嗎?這些查詢的位置應該放在什麼類型的類中?另外,將所有查詢放在同一個數據庫中是否是一個好的設計? – qwerty
如果您仍在使用「純JDBC」進行設計,本文可能對設計「DAO層」有所幫助:http://balusc.blogspot.com/2008/07/dao-tutorial-data-layer.html但最終,你應該真的開始看JPA和EJB。另見http://stackoverflow.com/questions/13011392/jsf-service-layer – BalusC