-3

x.javaとy.javaを含むclassesという名前のパッケージがあります。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(サーブレット-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>();。どうもありがとう。

4

1 に答える 1

5

ほとんどの場合、NullPointerExceptionは、null変数を逆参照していることを意味します。例外の原因となっている行(z.javaスタックトレースが示すように、の97行目)は次の行であると想定しています。

yy.getXs().add(s);

次に、それは2つのことを意味する可能性があります。

  1. yy無効である
  2. によって返されるリストyy.getXs()はnullです。

デバッガーを使用して問題を特定するか、コードにログトレースを追加します。

于 2012-07-15T07:55:38.573 に答える