一尘不染

为什么此JSP-Servlet代码不起作用?

jsp

我有一个名为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>();。非常感谢。


阅读 292

收藏
2020-06-10

共1个答案

一尘不染

大多数情况下,NullPointerException表示您正在取消引用null变量。我假设引起异常的行(z.java如堆栈跟踪所指示的中的第97行)是以下行:

yy.getXs().add(s);

那么这可能意味着两件事:

  1. yy 一片空白
  2. 返回的列表yy.getXs()为空。

使用调试器确定问题,或在代码中添加日志记录跟踪。

2020-06-10