2012-07-15 53 views
-3

我有一個名爲classes的包,其中包含x.java和y.java。 x.java:爲什麼這個JSP - Servlet代碼不起作用?

public class x{ 
private int a; 
private int b; 
private String c; 
private String d; 
private String e; 
private String f; 
//And the fields are encapsulated. 
} 

y.java:

public class y{ 
private List<x> xs; 
private int k1; 
private int k2; 
private String k3; 
private String k4; 
//And the fields are encapsulated. 
} 

z.JSP:

<% 
usecase y = new y(); 
request.getSession().setAttribute("yy", y); 
%> 
<form action="aaa?id=1" method="POST"> 
      <td> 
      <input type="text" name="bbb"/> 
      </td> 
      <td> 
      <input type="text" name="ccc"/> 
      </td> 
      <td> 
      <input type="submit" name="ddd"/> 
      </td> 
     </form> 

aaa.java(Servlet的 - 中的processRequest內側):

PrintWriter out = response.getWriter(); 
    try { 
     y yy = (y) request.getSession().getAttribute("yy"); 
     String id = request.getParameter("id"); 
     x s = new x(); 
     s.setC(request.getParameter("bbb")); 
     b.setD(request.getParameter("ccc")); 

     if ("1".equals(id)) { 
      s.setE("l"); 
     } else if ("2".equals(id)) { 
      s.setE("k"); 
     } 

     yy.getXs().add(s); 
     response.sendRedirect("z.jsp"); 
    } finally { 
     out.close(); 
    } 

這是代碼。當我用斷點觀察它時,一切都會順利進行,變量會得到它們的值。但在這一行中:yy.getXs()。add(s);有一個錯誤,它不會重定向。你能幫我嗎?

SOLUTION:與List<X> xs = new ArrayList<X>();更換private List<x> xs;。非常感謝。

+0

我在jsp和servlet中都導入了class.x和classes.y。 – noDispName 2012-07-15 07:38:01

+0

什麼樣的錯誤? – doonot 2012-07-15 07:47:29

+0

它傳遞行:response.sendRedirect(「z.jsp」);可能我會在這一行得到異常:yy.getXs()。add(s);.但不知道爲什麼。 – noDispName 2012-07-15 07:48:26

回答

5

大多數情況下,NullPointerException意味着您正在取消引用空變量。我認爲導致異常的行(行97 z.java,如堆棧跟蹤指示)是以下行:

yy.getXs().add(s); 

然後,它有兩個含義:

  1. yy爲空
  2. yy.getXs()返回的列表爲空。

使用調試器識別問題或在代碼中添加日誌記錄跟蹤。

+0

謝謝你的朋友。我意識到我需要在類y中創建新的列表。 – noDispName 2012-07-15 07:58:17

+0

是不是足以添加列表 xs = new List ();而不是私人列表 xs; ? – noDispName 2012-07-15 08:01:28

+0

它表示實現所有抽象方法 – noDispName 2012-07-15 08:03:05

相關問題