繁体   English   中英

Java Bean无法正常工作

[英]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代码中打印出变量的值(尤其是pagedatumpagenumrownum )。

您的JSP代码段正确吗? 看来您已经开始为

for (int i=0;i<10;i++) {

但我完全看不到结尾括号。 您可以检查是否存在这种情况,是否可以适当地修复代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM