我想使用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