[英]Java Bean not working as expected
好的,我有一个运行以下脚本部分的JSP。
<% irCollection mgrq = new irCollection();
mgrq.setMgrid("Chris Novish");
mgrq.populateCollection();
int pagenum;
if (request.getParameter("p") != null) {
String pagedatum=request.getParameter("p");
pagenum = Integer.parseInt(pagedatum);
} else { pagenum = 0; }
for (int i=0;i<10;i++) {
int rownum = pagenum * 10 + i;
InquireRecord currec = mgrq.getCurRecords(rownum);
out.println(currec.getID()); %>
irCollection具有一个ArrayList属性,该属性存储多个InquireRecord对象。 它使用mgrid as(在第2行中设置)作为匹配项从数据库中获取此数据。
但是我在第11行出现了IndexOutOfBounds异常。
我已经做了一些测试,并且我很确定这是因为populateCollection()并没有完成任务。 我有一个getSize方法,它的大小为0。
我在Eclipse中创建了一个测试类,以确保我的所有方法都可以正常工作:com.serco.inquire
public class test {
public static void main (String[] args) {
String mgr = "Chris Novish";
irCollection bob = new irCollection();
bob.setMgrid(mgr);
bob.populateCollection();
InquireRecord fred = bob.getCurRecords(1);
System.out.println(fred.getID());
}
}
该测试类产生的正是我所期望的。 除了某些局部变量的名称之外,我看不到我在JSP中有什么不同。
所以...告诉我,我犯了什么愚蠢的错误?
为了更全面,下面是populateCollection()方法:
public void populateCollection() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String filename = "inquire.mdb";
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}";
Connection con = DriverManager.getConnection( database ,"","");
Statement s = con.createStatement();
s.execute ("SELECT * FROM inquiries WHERE manager = '" + mgrid + "'");
ResultSet rs = s.getResultSet();
int cur;
if (rs != null) {
while (rs.next()) {
cur = rs.getRow();
cur -- ;
int curID = rs.getInt("ID");
this.newIR.setID(curID);
String cursub = rs.getString("submitter");
this.newIR.setSubmitter(cursub);
this.iRecords.add(cur, this.newIR);
}
this.size = iRecords.size();
this.pages = this.size / 10;
int remain = this.size % 10;
if (remain > 0) { this.pages++; }
} else { System.out.println("no records."); }
}
catch (Throwable e) {
System.out.println(e);
}
}
您的IndexOutOfBounds
异常可能是由于rownum
的值传递给mgrq.getCurRecords()
。
您的测试代码无法证明任何事情,因为在那里您要使用常量来调用getCurRecords()
,该常量可能始终对您的系统有效,并且永远不会导致异常。
我的建议是使用调试器逐步遍历JSP中的代码,甚至简单地在JSP代码中打印出变量的值(尤其是pagedatum
, pagenum
和rownum
)。
您的JSP代码段正确吗? 看来您已经开始为
for (int i=0;i<10;i++) {
但我完全看不到结尾括号。 您可以检查是否存在这种情况,是否可以适当地修复代码?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.