2014-11-08 67 views
-1

我想弄清楚爲什麼我得到一個空指針異常。如何從一個servlet發送arraylist到其他servlet

當我嘗試執行addformservlet。 在這個問題上幫助我我是新來的jsp servlets。

請幫助我..

,我都堅持了一部分......

addform的servlet:

 processRequest(HttpRequest req,HttpResponse res) 
     { 
     String []erlist=null; 
     PrintWriter out = response.getWriter(); 
     response.setContentType("text/html;charset=UTF-8"); 
     try { 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Add dvd :</title>"); 
     out.println("</head>"); 
     out.println("<body bgcolor='#E6599'>"); 
     if(erlist!=null) 
     { 
     out.println("<p>"); 
     out.println("<font color='red'>Correct the following errors:"); 
     out.println("<ul>"); 
     for(int i=0;i<erlist.length;i++) 
      out.print("<li>"+erlist[i]+"</li>"); 

     out.println("</ul>"); 
     out.println("</font>"); 
     out.println("<a href='index.jsp'> back to index page</a>"); 
     out.println("</p>"); 
     } 

     erlist=(String [])request.getSession().getAttribute("elist");// i get errlist from dvdaction.java 

     out.println("<h2>Add DVD: </h2>"); 
     out.println("<form action='dvdaction' method='post' >");//post page to dvdaction.java 

     //some codes here.... 
     out.println("</form>"); 

     out.println("</body>"); 
     out.println("</html>"); 

     } 

    //dvdaction.java: 

     processRequest(HttpRequest req,HttpResponse res) 

     {  
     String err[]=null; 


     try { 


     title=(String)request.getParameter("title"); 

     int i=0; 

     if(title.trim().length()==0) 
     { 
     err[i]="Please add the title field"; 
     i++; 
     } 


     if(err.length==0) 
     { 

     //some codes here... 
     } 

     request.getSession().setAttribute("elist", err);// i set err Arraylist here... 
     RequestDispatcher rd=request.getRequestDispatcher("adddvdformservlet"); 
     rd.forward(request, response); 

    } 
+0

我看不到你在任何地方創建'err'並且Java數組不是動態的。基本上,你應該得到'NullPointerException's。 – 2014-11-08 18:18:02

+0

i crested err []在dvdaction.java,第二個processrequest() – 2014-11-08 18:21:21

+0

設置之前'err [i] =「請添加標題欄';'你應該初始化你想要的錯誤或項目的數量 – 2014-11-09 23:28:23

回答

0

你需要給予任何價值之前初始化err陣列。
dvdaction.java,初始化爲String err[]=new String[5];,然後將它的值否則會拋出java.lang.NullPointerException

+0

我試過了,不工作.. – 2014-11-08 18:31:39

+0

請張貼您的最近的代碼,並且你如果'title'爲null,則檢查error []數組是否具有值。也會報錯您的錯誤堆棧跟蹤。 – Rohan 2014-11-08 18:38:02

+0

我爲adddvdform servlet添加了一個過濾器頁面,所以null ptr ex。被拋出..謝謝我在錯誤堆棧中確定錯誤原因..感謝RRR我明白你願意幫助在這種情況下..我的代碼工作正常.. - – 2014-11-10 20:23:07

0

你也應該設置 'err[i]="Please add the title field";' 前前

if(erlist!=null) 
     { 
     out.println("<p>"); 
     out.println("<font color='red'>Correct the following errors:"); 
     out.println("<ul>"); 
     for(int i=0;i<erlist.length;i++) 
      out.print("<li>"+erlist[i]+"</li>"); 

     out.println("</ul>"); 
     out.println("</font>"); 
     out.println("<a href='index.jsp'> back to index page</a>"); 
     out.println("</p>"); 
     } 

移動這一說法

erlist=(String [])request.getSession().getAttribute("elist");// i get errlist from dvdaction.java 

您應該初始化您想要的錯誤或項目的數量。讓我們假設10

String err[]=new String[10]; 

我希望這可以幫助!