2012-07-15 93 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

相关问题