我有一个名为classes的包,其中包括x.java和y.java。x.java:
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); 有一个错误,它不会重定向。你能帮我吗?
解决方案 :替换private List<x> xs;为List<X> xs = new ArrayList<X>();。非常感谢。
private List<x> xs;
List<X> xs = new ArrayList<X>();
大多数情况下,NullPointerException表示您正在取消引用null变量。我假设引起异常的行(z.java如堆栈跟踪所指示的中的第97行)是以下行:
z.java
yy.getXs().add(s);
那么这可能意味着两件事:
yy
yy.getXs()
使用调试器确定问题,或在代码中添加日志记录跟踪。