【问题标题】:Redirecting/Forwarding my JSP page重定向/转发我的 JSP 页面
【发布时间】:2015-07-13 11:10:13
【问题描述】:

我有 2 个 JSP 页面链接在一起。其中之一是具有多个复选框的表单,单击复选框,值将发送到 Proto1.jsp,其中值被转换为介绍字符串并启动 SQL 命令。但是,如果没有选中复选框并提交表单,Proto1 jsp 页面会给我一个空指针异常。无论如何,如果没有选中任何复选框,我可以将用户重定向回复选框页面吗?

这是我拥有的 proto_1.jsp 的代码,我在这里尝试了一堆答案,但我仍然不断收到空指针异常。

 portfolio = request.getParameterValues("portfolio");

  String[] portfolio = null;
  if(null == request.getParameter("submit")) {
  portfolio = (String[])session.getAttribute("portfolio");
  } else {
  portfolio = request.getParameterValues("portfolio");
  session.setAttribute("portfolio", portfolio);
  } 

 try{
  OracleDataSource ds= new OracleDataSource();
  //javax.sql.DataSource ds = new javax.sql.DataSource();
  ds.setDriverType("thin");
  ds.setServerName("localhost");
  ds.setPortNumber(1521);
  ds.setDatabaseName("orcl");
  ds.setUser("system");
  ds.setPassword("amex1234");
  Connection connection = ds.getConnection();
 //System.out.println("Connected Successfully");


        Statement statement1 = connection.createStatement() ;
        Statement statement2 = connection.createStatement() ;
        Statement statement3 = connection.createStatement() ;

        if (portfolio!=null)
        { 
            for(int i=0;i<portfolio.length;i++) 
            {   
                pretestList.add(new ArrayList());
                stgtestList.add(new ArrayList());
                mirrorList.add(new ArrayList());
            }
            //  System.out.println(pretestList);
                //System.out.println(stgtestList);
                //System.out.println(mirrorList);

            for(int j=0; j<portfolio.length;j++)    
            { String pretemp="";
              String stgtemp="";
              String mirrortemp=""; 

                ResultSet resultsetpre = statement1.executeQuery("select ID FROM "+portfolio[j]+"_Pre") ; //Put in SQl command and Table name here 
                ResultSet resultsetstg = statement2.executeQuery("select ID FROM "+portfolio[j]+"_Stg") ; 
                ResultSet resultsetmirror = statement3.executeQuery("select ID FROM "+portfolio[j]+"_Mirror") ; 

                //System.out.println("pretemp "+resultsetpre.getString(1));
                //System.out.println("stgtemp"+resultsetstg.getString(1));
                //System.out.println("mirrortemp"+resultsetmirror.getString(1));

                while(resultsetpre.next())
                {
                    pretemp = resultsetpre.getString(1);
                    pretestList.get(j).add(pretemp);
            }
                while(resultsetstg.next())
                {
                    stgtemp = resultsetstg.getString(1);
                    stgtestList.get(j).add(stgtemp);
                }
                while(resultsetmirror.next()){
                    mirrortemp= resultsetmirror.getString(1);
                    mirrorList.get(j).add(mirrortemp);
                }

                //System.out.println("pretest list"+pretestList);
                //System.out.println("stgtestlist"+stgtestList);
                //System.out.println("mirrorlist"+mirrorList);
            }

         } 

   } catch(SQLException e) {
     e.printStackTrace();
    }
     %> 

【问题讨论】:

    标签: java jquery jsp checkbox


    【解决方案1】:
    if(request.getParameter("checkbox1Name") == null) //use sendRedirect method
       response.sendRedirect("Proto1.jsp")
    else
       continue with your action or redirect to proto2.jsp
    

    【讨论】:

    • 所以我在我的 proto1 jsp 页面中实现了这段代码,对吧?我用我的代码更新了这个问题,你能告诉我我应该在哪里实现吗?我在很多地方都试过了,但我仍然得到相同的空指针异常
    • 哪一个是你的复选框/你的复选框名称是什么
    • 在顶部本身检查 if(request.getParameter("portfolio") == null ) //使用 sendRedirect 方法 response.sendRedirect("Proto1.jsp")
    • "portfolio" 是复选框的名称,但是所有复选框都在不同的 jsp 页面 (checkbox.jsp) 中,该页面将数据发布到 proto_1.jsp
    • 乐于助人。 :)
    【解决方案2】:

    您必须在转换为字符串之前检查第一页复选框的值,如果它为空,您可以从 JSP2 转发到 JSP1。

    【讨论】:

      【解决方案3】:

      执行 NullCheck 类似的操作

      String myValue = request.getParameter("myParam");
          if(myValue != null && myValue.trim().length() > 0){
      //Process Here
      }
      

      如果未选中复选框,则该参数将为空。 根据您的申请,检查长度是可选的

      一旦您决定要重定向回上一页,然后以这种方式重定向

      response.sendRedirect('YourJspNameOrPath.jsp');
      

      【讨论】:

      • 所以我在我的 proto1 jsp 页面中实现了这段代码,对吧?我用我的代码更新了这个问题,你能告诉我我应该在哪里实现吗?我在很多地方都试过了,但我仍然得到相同的空指针异常
      • 抱歉不在了。看起来 raghavendra 解决了你的问题。让我知道我是否可以为您提供任何帮助。
      【解决方案4】:

      处理此问题的最佳方法是检查是否缺少选定值,如果不满足选定值的要求,则拒绝提交表单。

      【讨论】:

      • 是的,如果需要,我最好还有 JavaScript 和后端验证
      • 我该如何实施呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 2015-05-22
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多