2011-02-04 31 views
1

谁能帮我用下面的空指针异常问题,请:这个空指针真的很烦人 - 请帮忙!

AjaxButton viewResult = new AjaxButton("test"){ 
    protected void onSubmit(AjaxRequestTarget target,Form form){ 
     try { 
      retrieveTestID(); 
      System.out.println(testID); 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
     } 
     results=new ArrayList(); 
     DB db=new DB(); 
     try{ 
      db.connect(); 
      String query = 
       "Select Stud_Username,result from students2tests where Test_ID=" 
       + testID; 

      System.out.println(query); 
      ResultSet rs=db.execSQL(query); 
      while(rs.next()){ 
       Result result = new Result(rs.getString("Stud_Username"), 
              rs.getInt("result")); 
       results.add(result); 
      } 
      if(results.isEmpty()){ 
       System.out.println("I'm empty, there is error"); 
      } 
      else{ 
       //this is being printed so results isnt empty 
       System.out.println("NOT EMPTY"); 
      } 
      db.close(); 
      /***seems to be throwing an error because of this line***/ 
      ResultsTable table=new ResultsTable(results); 
      setResponsePage(table); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

这是ReesultsTable类(数据视图)

public class ResultsTable extends BasePage { 
    private ArrayList resultsList; 

    public ResultsTable(ArrayList res){ 
     res=resultsList; 
     if(resultsList.isEmpty()){ 
      System.out.println("I am empty,beware"); 
     }else{ 
      System.out.println("I am not emty-no worries!!!"); 
     } 

     final DataView dataView = new DataView("studresult", 
      new ListDataProvider(resultsList)) { 
       public void populateItem(final Item item) { 
        final Result studres = (Result) item.getModelObject(); 
        item.add(new Label("username", studres.getUsername())); 
        item.add(new Label("result", "" + studres.getResult())); 
       } 
      }; 

     dataView.setItemsPerPage(10); 
     add(dataView); 
     add(new PagingNavigator("navigator", dataView)); 
    } 
} 

谢谢你这么多

+3

发生异常并且您可以发布堆栈跟踪? – berry120 2011-02-04 01:46:21

回答

4

在你ResultsTable构造,您始终将成员变量resultsList(初始化为null)保存到res ArrayList参数。交换第一行的边,可能是好的。换句话说,您希望构造函数的第一行是

resultsList = res; 
+0

击败我:-) @E Shindler:下次请发布堆栈跟踪。它使远程诊断**变得更容易。 – 2011-02-04 01:52:41