2015-07-13 114 views
2

我有2個JSP頁面鏈接在一起。其中之一是具有多個複選框的表單,您單擊該複選框,將值發送到Proto1.jsp,其中的值不會轉換爲介紹字符串,並會啓動SQL命令。但是,如果未選中複選框並提交表單,Proto1 jsp頁面會爲我提供空指針異常。無論如何,如果沒有選中任何複選框我可以將用戶重定向回覆選框頁面?重定向/轉發我的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(); 
    } 
    %> 

回答

3
if(request.getParameter("checkbox1Name") == null) //use sendRedirect method 
    response.sendRedirect("Proto1.jsp") 
else 
    continue with your action or redirect to proto2.jsp 
+0

所以我在我的proto1 jsp頁面中實現了這一點代碼吧?我用我的代碼更新了這個問題,你能告訴我我應該在哪裏實現它嗎?我嘗試了一堆地方,但我仍然得到相同的空指針異常 – user3481478

+0

哪一個是您的複選框/什麼是您的複選框名稱 – Raghavendra

+0

在頂部本身檢查是否(request.getParameter(「portfolio」)== null)/ /使用sendRedirect方法 response.sendRedirect(「Proto1.jsp」) – Raghavendra

1

您必須在轉換爲String之前檢查第一頁複選框的值,如果它爲null,則可以從JSP2轉發到JSP1。

1

待辦事項NullCheck像這樣

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

如果複選框未選中比你會得到的參數爲空。一旦你決定要重定向到前一頁然後重定向這樣

response.sendRedirect('YourJspNameOrPath.jsp'); 
+0

所以我在我的proto1 jsp頁面中實現這一點代碼吧?我用我的代碼更新了這個問題,你能告訴我我應該在哪裏實現它嗎?我在一堆地方嘗試了它,但我仍然得到相同的空指針異常 – user3481478

+0

對不起。看起來像raghavendra解決了你的問題。 讓我知道,如果我可以幫助你的任何事情。 –

1

對付這將是最好的辦法 檢查長度是可選的,因爲每個應用程序

檢查是否存在選定的值,如果不符合所選值的要求,則拒絕提交表單。

+0

是的最好我有JavaScript和後端驗證以及如果需要 – Raghavendra

+0

我該怎麼去實現呢? – user3481478