【问题标题】:how to send arraylist from one servlet to other servlet如何将arraylist从一个servlet发送到另一个servlet
【发布时间】:2014-11-08 18:10:46
【问题描述】:

我想弄清楚为什么会出现空指针异常。

当我尝试执行 addformservlet 时。 帮助我解决这个问题,我是 jsp servlet 的新手。

请帮帮我..

我都被部分卡住了......

添加表单小服务程序:

      processRequest(HttpRequest req,HttpResponse res) 
      { 
      String []erlist=null;
      PrintWriter out = response.getWriter();
      response.setContentType("text/html;charset=UTF-8");
      try {
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Add dvd :</title>");
        out.println("</head>");
        out.println("<body bgcolor='#E6599'>");
        if(erlist!=null)
        {
        out.println("<p>");
        out.println("<font color='red'>Correct the following errors:");
        out.println("<ul>");
        for(int i=0;i<erlist.length;i++)
           out.print("<li>"+erlist[i]+"</li>");

        out.println("</ul>");
        out.println("</font>");
        out.println("<a href='index.jsp'> back to index page</a>");
        out.println("</p>");
        }

        erlist=(String [])request.getSession().getAttribute("elist");// i get errlist from dvdaction.java

        out.println("<h2>Add DVD:  </h2>");
        out.println("<form action='dvdaction' method='post' >");//post page to dvdaction.java

        //some codes here....
        out.println("</form>");

        out.println("</body>");
        out.println("</html>");

       }

  //dvdaction.java:

        processRequest(HttpRequest req,HttpResponse res)

        {       
        String err[]=null;


       try {


        title=(String)request.getParameter("title");

        int i=0;

       if(title.trim().length()==0)
       {
        err[i]="Please add the title field";
        i++;
       }


       if(err.length==0)
       {

       //some codes here...
        }

        request.getSession().setAttribute("elist", err);// i set err Arraylist here...
        RequestDispatcher rd=request.getRequestDispatcher("adddvdformservlet");
        rd.forward(request, response);

    } 

【问题讨论】:

  • 我没有看到你在任何地方创建 err 并且 Java 数组不是动态的。基本上,你应该得到NullPointerExceptions。
  • 我在 dvdaction.java 中创建了 err[],第二个 processrequest()
  • 在设置之前 'err[i]="请添加标题字段";'您应该使用所需的错误或项目数进行初始化
  • 我为 adddvdform servlet 添加了一个过滤页面,因此为 null ptr ex。被抛出 .. 感谢我在错误堆栈中确定了错误原因 .. 感谢 hamed 我感谢您愿意在这种情况下提供帮助 .. 我的代码工作正常..

标签: java jsp jakarta-ee servlets


【解决方案1】:

您需要在分配任何值之前初始化err 数组。
dvdaction.java中,初始化为String err[]=new String[5];,然后设置它的值,否则会抛出java.lang.NullPointerException

【讨论】:

  • 请发布您最近的代码,如果title 为空,您是否检查了error[] 数组是否有值。也请发布您的错误堆栈跟踪。
  • 我为 adddvdform servlet 添加了一个过滤页面,因此为 null ptr ex。被抛出 .. 感谢我在错误堆栈中确定了错误原因 .. 感谢 RRR 我感谢您愿意在这种情况下提供帮助 .. 我的代码工作正常.. –
【解决方案2】:

你应该移动这个语句

erlist=(String [])request.getSession().getAttribute("elist");// i get errlist from dvdaction.java

之前

 if(erlist!=null)
        {
        out.println("<p>");
        out.println("<font color='red'>Correct the following errors:");
        out.println("<ul>");
        for(int i=0;i<erlist.length;i++)
           out.print("<li>"+erlist[i]+"</li>");

        out.println("</ul>");
        out.println("</font>");
        out.println("<a href='index.jsp'> back to index page</a>");
        out.println("</p>");
        }

在设置 'err[i]="Please add the title field";' 之前,你应该使用你想要的错误或项目的数量进行初始化......让我们假设 10

String err[]=new String[10];

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-21
    • 2016-09-23
    • 2015-09-27
    • 2017-09-16
    • 1970-01-01
    • 2023-04-05
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多