Java h:dataTable没有值
嗨, 已使用JSF h:data Table-JSF datatable为空,my sp返回值,因此getList返回值,但在浏览器中只看到标题,在浏览器中看不到表值 以下是我的JSPJava h:dataTable没有值,java,jsf,Java,Jsf,嗨, 已使用JSF h:data Table-JSF datatable为空,my sp返回值,因此getList返回值,但在浏览器中只看到标题,在浏览器中看不到表值 以下是我的JSP 我的豆子 公共类DataTableBean{ private List<BillTransPay> list; public List<BillTransPay> getList() { String SP_BILLPAY = "{call sp_aw_BillTrans
我的豆子
公共类DataTableBean{
private List<BillTransPay> list;
public List<BillTransPay> getList() {
String SP_BILLPAY = "{call sp_aw_BillTransPay(?,?,?,?,?,?,?)}";
Connection con = null;
ResultSet rs = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = java.sql.DriverManager
.getConnection(conString);
CallableStatement cbls = con
.prepareCall("{call sp_aw_BillTransPay(?,?,?,?,?,?,?)}");
cbls.setString(1, "csf");
cbls.setString(2, "20100101");
cbls.setString(3, "20100301");
cbls.setString(4, "B");
cbls.setString(5, "01CS");
cbls.setString(6, "ALL");
cbls.setInt(7, 14000);
rs = cbls.executeQuery();
list = new ArrayList<BillTransPay>();
while (rs.next()) {
BillTransPay btp = new BillTransPay();
btp.setSponsorID(rs.getString("SponsorCode"));
btp.setSponsorName(rs.getString("SponsorName"));
btp.setDistributorID(rs.getString("DistID"));
btp.setDistributorName(rs.getString("DistName"));
list.add(btp);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return list;
}
public void setList(List<BillTransPay> list) {
this.list = list;
}
私有列表;
公共列表getList(){
字符串SP_BILLPAY=“{调用SP_aw_BillTransPay(?,,,,,,,,,?,,,,?)}”;
连接con=null;
结果集rs=null;
试一试{
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
con=java.sql.DriverManager
.连接(施工);
CallableStatement cbls=con
.prepareCall({调用sp_aw_BillTransPay(?,,,,,,,,,,,?)});
cbls.设置字符串(1,“csf”);
cbls.setString(2,“20100101”);
cbls.设置字符串(3,“20100301”);
cbls.设置字符串(4,“B”);
cbls.固定管柱(5,“01CS”);
cbls.集合字符串(6,“全部”);
cbls.setInt(714000);
rs=cbls.executeQuery();
列表=新的ArrayList();
while(rs.next()){
BillTransPay btp=新BillTransPay();
btp.setponsorid(rs.getString(“赞助商代码”);
btp.setponsorname(rs.getString(“赞助商名称”);
btp.setDistributorID(rs.getString(“DistID”);
btp.setDistributorName(rs.getString(“DistName”));
添加列表(btp);
}
}捕获(例外情况除外){
例如printStackTrace();
}
退货清单;
}
公共无效集合列表(列表){
this.list=列表;
}
}
Faces Config.xml
**<managed-bean>
<managed-bean-name>dataTableBean</managed-bean-name>
<managed-bean-class>
com.SQLProcess.dto.DataTableBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>**
**
dataTableBean
com.SQLProcess.dto.DataTableBean
要求
**
只需运行一个调试器或添加一个System.out.println(列表)代码>返回列表的右前<代码>返回列表
查看是否调用了该方法,并且列表中确实包含项
他说,这项昂贵的数据库工作真的不应该在一个getter中完成。在请求过程中可以多次调用它。您不想不必要地打击/强调数据库。将DB作业移动到bean的构造函数中。此外,您没有显式关闭
连接
、语句
和结果集
,因此正在泄漏数据库资源。您需要在最后
块中关闭它们,该块与您获取它们的位置相同。代码似乎可以。什么是HTML?你真的在使用List
传递什么吗?只传递头,但是sp返回值。在XHTML上尝试getList
,或者说retrieveData
并重构方法名如果我尝试getList-我得到以下错误javax.servlet.ServletException:/JSP/dataTableDemo.JSP(15,3)'#{dataTableBean.getList}'在类型com.SQLProcess.dto.dataTableBean javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)上找不到属性'getList',我将尝试从getter方法中删除数据获取(将其放入构造函数中,因为它是请求范围的bean)。让getter只返回构造函数填写的列表。谢谢大家,sqldriver版本有问题-并且知道为什么我会出现任何错误,页面被访问。但是一旦放置了Corect驱动程序,错误就消失了。谢谢大家:D
**<managed-bean>
<managed-bean-name>dataTableBean</managed-bean-name>
<managed-bean-class>
com.SQLProcess.dto.DataTableBean
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>**