2017-01-24 12 views
1

私はこのようなフォームを作成しようとしています。各行には2つのドロップダウンがあります。最初は1つだけを選択し、もう1つは複数を選択します。 Here is the output screen.単一送信ボタンを使用して複数のドロップダウン値を送信

この画面から、1つの送信ボタンを使用して、すべての行の値(両方のドロップダウンを含む)をサーブレット(Testing.java)に送信したいとします。 Testing.javaでは、基本的に、各テスト名に対応する各行のすべての値にアクセスできるようにしたいと考えています。ここで

はimageimageに示す出力のための私のJSPコードです:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import = "java.util.*" pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

     <link rel="stylesheet" href="jquery chosen utils/chosen.css"> 
     <link rel="stylesheet" type="text/css" href="jquery chosen utils/welcomestyle.css"> 
    </head> 
    <body> 
     <div align = center> 
      <table style="width: 100%"> 
       <tr> 
        <th> Script Name </th> 
        <th> Main Action Keywords </th> 
        <th> Sub Action Keywords </th> 
       </tr> 
      </table> 
      <% 
      for(int i =0; i<5;i++) 
      { 
      %> 
      <form action = "Testing"> 
      <table style="width: 100%"> 
       <tr> 
        <td> Test <%= i %> </td> 
        <td> 
         <div> 
          <select name = "Actions" class = "Actions" > 
           <% 
           for(int j=0;j<4;j++) 
           { 
           %> 
           <option value="Action<%= j %>"> 
            Action <%= j %> 
           </option> 
           <% 
           } 
           %> 
          </select> 
         </div> 
        </td> 
        <td> 
         <select name = "SubActions" class = "SubActions" multiple> 
          <% 
          for(int k=0;k<4;k++) 
          { 
          %> 
          <option value="SubAction<%= k %>"> 
           Sub Action <%= k %> 
          </option> 
          <% 
          } 
          %> 
         </select> 
        </td> 
       </tr> 
      </table> 
      <% 
      } 
      %> 
      <br><br> 
      <input type = submit value = "Submit" name ="submit" /> 
     </form> 
    </div> 
</body> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 
<script src="jquery chosen utils/chosen.jquery.js" type="text/javascript"></script> 
<script src="jquery chosen utils/prism.js" type="text/javascript" charset="utf-8"></script> 
<script type="text/javascript"> 
     $(document).ready(function(){ 
      $(".Actions").chosen({ 
       width: "75%" 
      }); 
      $(".SubActions").chosen({ 
       width: "75%" 
      }); 
     }); 
    </script> 
</html> 

私は私のTesting.javaはこのような何かになりたい:

import java.io.IOException; 
import java.util.ArrayList; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/Testing") 
public class Testing extends HttpServlet 
{ 

private static final long serialVersionUID = 1L; 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 


    String a = request.getParameter("Actions"); //Should get actions corrsponding to each test 
    String b = request.getParameter("SubActions"); //Should get subactions corrsponding to each test 


    } 
} 

現在Testing.javaしか返しますアクションおよび第1行の第1サブアクション(テスト0)を含む。 私は、ほとんどドロップダウンのために少しjQueryでHTMLを使用しています。

誰も私に同じことをする方法の提案を与えることができますか?

+0

あなたのページには、よりシンプルでクリーンな方法で、あなたのフォームに以下のドロップダウンを使用するためのブートストラップライブラリを使用することをお勧めします: [link](https://silviomoreto.github.io/bootstrap-select)/examples /) – sanjay

答えて

0

私は最終的にそれが完全に正確ではないのですけれどもシャンタラムのアイデアを使用して、各アクションとサブアクションにアクセスする方法を発見しました。私にとって

<select name = "Actions[<%= i %>]" class = "Actions" > 

<select name = "SubActions[<%= i %>]" class = "SubActions" multiple> 

、以下は動作しませんでした:

String actions[] = request.getParameterValues("Actions"); 

それらにアクセスするための、だから、彼のアイデアを洗練私は、以下の変更を加え、

私は以下を行った:

String actions[] = new String[5]; 
for (i = 0; i < 5; i++) 
     actions[i] = request.getParameter("Actions["+i+"]"); 

String[][] subActions = new String[5][]; 
    for (i = 0; i < length; i++) 
     subActions[i] = request.getParameterValues("SubActions["+i+"]"); 

これ以上の方法は大歓迎です。

0

あなたが探していることはサブアクションためアクション2D ArrayためArrayです。Subアクションについては

また

変更:
<select name = "SubActions" class = "SubActions" multiple>
へ:
<select name = "SubActions[<%= i %>]" class = "SubActions" multiple>

サーブレットの値にアクセスするには、この操作を行います。

String[] actions =request.getParameterValues('Actions'); 
int length = 5 ;  // Length of Rows 
String[][] subActions = new String[length][]; 

for (int i = 0; i < length; i++) { 
    subActions[i] = request.getParameterValues("SubActions["+i+"]"); 
} 

を、私はそれが固定されているので行を作成するための参照ヨールのループすることができます。
あなたの行(選択)の場合は、あなたがそれを動的な方法にアクセスする必要がサーブレットでダイナミック/賢くです。そして、サーブレットで動的に長さを変更します。

int length = 0 ;  // Length of Rows 
if(actions != null) 
    length = actions.length;  // Calculate Rows Dynamic 
+0

あなたが提案したアイデアが気に入った。しかし、変数_j_の使用は間違っているように思えます。なぜなら、それはサブアクション選択属性で使用されるとき、常に4になるからです。 –

+0

私の間違いを発見しましたが、すぐに気付いたためにthanxsを更新します –

+0

'j'を削除し、対応する' subActions [i] = request.getParameterValues( "SubActions [" + i + "]"); ' –

関連する問題