2017-08-19 22 views
0

ユーザー入力を配列に保存してから、後でそれをサーブレットに渡そうとしています。私はさまざまなコードを検索して試しましたが、まだ運がありません。私は関数が間違っているかシンタックスであるかどうかは分かりませんが、私は思っていてもまだまだ固執しているすべてのものを使ってみました。文字列配列を保存してJSPからサーブレットに渡す

<body> 
    <div id="display"></div> 
    <div ng-controller="DemoCtrl" ng-cloak="" class="md-inline-form" ng-app="MyApp" layout="column" layout-sm="row" style="color: black" layout-align="center center" layout-align-sm="start start" layout-fill=""> 
    <md-content class="md-whiteframe-10dp" flex-sm=""> 
     <md-toolbar flex="" id="materialToolbar"> 
     <div class="md-toolbar-tools"> 
      <span flex=""></span> 
      <span class="md-headline" align="center">Registration Form</span> 
      <span flex=""></span> 
     </div> 
     </md-toolbar> 
     <div layout-padding=""> 
     <div></div> 

     <% 




               %> 
     <form action="" > 
      <input type="hidden" name="action" /> 
      <div layout="row" layout-sm="column"> 
      <md-input-container flex-gt-sm=""> 
       <label>LRN:</label> 
       <input name="a" id="lrn" required="" type="number" placeholder="Your LRN" style="width: 160px"> 
      </md-input-container> 

      <md-input-container flex-gt-sm=""> 
       <label>Student Number:</label> 
       <input name="a" id="snum" required="" type="number" placeholder="Your Student Number"> 
      </md-input-container> 
      </div> 

      <div layout="row" layout-sm="column"> 
      <md-input-container flex-gt-sm=""> 
       <label>First Name</label> 
       <input name="a" id="fn" required="" type="text" placeholder="Your First Name"> 
      </md-input-container> 

      <md-input-container flex-gt-sm=""> 
       <label>Middle Name:</label> 
       <input name="a" id="mn" required="" type="text" placeholder="Your Middle Name"> 
      </md-input-container> 

      <md-input-container flex-gt-sm=""> 
       <label>Last Name:</label> 
       <input name="a" id="ln" required="" type="text" placeholder="Your Last Name"> 
      </md-input-container> 
      </div> 

      <div layout="row" layout-sm="column"> 
      <p style="font-size: 12px; margin-left: 3px; margin-top: 18px;">Gender: </p> 
      <input type="hidden" name="a" value="{{user.gender}}" /> 
      <md-radio-group style="margin: 12px 0 19px;" ng-model="user.gender" required=""> 
       <md-radio-button value="Male" class="md-primary">Male</md-radio-button> 
       <md-radio-button value="Female" ">Female</md-radio-button> 
      </md-radio-group> 
      </div> 
      <div layout="row" layout-sm="column"> 
      <md-input-container flex-gt-sm=""> 
       <label>Parent</label> 
       <input required="" type="text" id="p" name="a" placeholder="Your Parent" /> 
      </md-input-container> 
      </div> 
      <div layout="row" layout-sm="column"> 
      <!--<md-button class="md-raised md-primary" style="width:100%; margin: 5px 5px;" type="submit" >Submit</md-button><br><br> 

           <md-button class="md-raised md-primary" style="width:100%; margin: 5px 5px;" type="reset" >Reset</md-button><br> --> 
      <input type="submit" value="Save" onclick="insert();" /> 

      <input type="submit" value="Submit" onclick="form.action='register';" /> 
      </div> 
     </form> 
     </div> 
    </md-content> 
    </div> 

</body> 

は、ここで私は配列に保存押すと、入力を格納すると仮定します私の機能です。しかし、私は何も起こりません保存ボタンをクリックするたびに、何も...

var LRN = new Array(); 
var SNUM =new Array(); 
var FN =new Array(); 
var MN =new Array(); 
var LN =new Array(); 
var G =new Array(); 
var P =new Array(); 

var lrnInput = document.getElementById("lrn"); 
var snumInput = document.getElementById("snum"); 
var fnInput = document.getElementById("fn"); 
var mnInput = document.getElementById("mn"); 
var lnInput = document.getElementById("ln"); 
var gInput = document.getElementById("g"); 
var pInput = document.getElementById("p"); 

function insert () { 

var lrnInput = document.getElementById("lrn").value(); 
var snumInput = document.getElementById("snum").value(); 
var fnInput = document.getElementById("fn".value()); 
var mnInput = document.getElementById("mn").value(); 
var lnInput = document.getElementById("ln").value(); 
var gInput = document.getElementById("g").value(); 
var pInput = document.getElementById("p").value(); 

LRN[LRN.length]=lrnInput 
SNUM[SNUM.length]=snumInput 
FN[FN.length]=fnInput 
MN[MN.length]=mnInput 
LN[LN.length]=lnInput 
G[G.length]=gInput 
P[P.length]=pInput; 
} 

を起こりません..私はちょうど呼び出しLRNのVARを試みたが、私はまだここ

を何をするか分からない、私のサーブレットのコードは次のとおりです。

response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    String[] lrn = request.getParameterValues("lrn"); 

    List<String> list = Arrays.asList(lrn); 
    try { 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>INFORMATION</title>"); 
     out.println("<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css'>"); 
     out.println("<link rel='stylesheet' href='css/style1.css'>"); 
     out.println("</head>"); 

     out.println("<body>"); 
     out.println("<section>"); 
     out.println("<h1>MALE</h1>"); 
     out.println("<div class='tbl-header'>"); 
     out.println("<table cellpadding='0' cellspacing='0' border='0'>"); 
     out.println("<thead>"); 
     out.println("<tr>"); 
     out.println("<th>LRN</th>"); 
     out.println("<th>Student Number</th>"); 
     out.println("<th>First Name</th>"); 
     out.println("<th>Middle Name</th>"); 
     out.println("<th>Last Name</th>"); 
     out.println("<th>Gender</th>"); 
     out.println("<th>Parent</th>"); 
     out.println("</tr>"); 
     out.println("</thead>"); 
     out.println("</table>"); 
     out.println("<div class='tbl-content'>"); 
     out.println("<table cellpadding='0' cellspacing='0'border='0'>"); 
     out.println("<tbody>"); 

     for (int i = 0; i<list.size(); i++) { 
      if (i>0 && i%7==0) { 
       out.println("</tr><tr>"); 
      } 
      out.println("<td>" + list.get(i) + "</td>"); 
     } 
    /* 
    out.println("<td>"+lrn+"</td>"); 
    out.println("<td>"+snum+"</td>"); 
    out.println("<td>"+fn+"</td>"); 
    out.println("<td>"+mn+"</td>"); 
    out.println("<td>"+ln+"</td>"); 
    out.println("<td>"+gender+"</td>"); 
    out.println("<td>"+parent+"</td>");*/ 

     out.println("</tbody>"); 
     out.println("</table>"); 
     out.println("</div>"); 

     out.println("</section>"); 

     out.println("<section>"); 
     out.println("<h1>FEMALE</h1>"); 
     out.println("<div class='tbl-header'>"); 
     out.println("<table cellpadding='0' cellspacing='0' border='0'>"); 
     out.println("<thead>"); 
     out.println("<tr>"); 
     out.println("<th>LRN</th>"); 
     out.println("<th>Student Number</th>"); 
     out.println("<th>First Name</th>"); 
     out.println("<th>Middle Name</th>"); 
     out.println("<th>Last Name</th>"); 
     out.println("<th>Parent</th>"); 
     out.println("</tr>"); 
     out.println("</thead>"); 
     out.println("</table>"); 
     out.println("<div class='tbl-content'>"); 
     out.println("<table cellpadding='0' cellspacing='0'border='0'>"); 
     out.println("<tbody>"); 

     out.println("</tbody>"); 
     out.println("</table>"); 
     out.println("</div>"); 
     out.println("</section>"); 
     out.println("<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>"); 
     out.println("<script src='js/index1.js'></script>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } finally { 
     out.close(); 
    } 
+0

htmlフォームの送信中にjavascript配列を送信することはできません。むしろ、カンマで区切られた文字列でinsert()関数を呼び出している間に、それらを隠しフィールドに格納し、そこでサーブレットで分割する必要があります。 –

+0

@ GauravSrivastavどうすればいいですか? –

+0

答えでコードを共有するだけです。 –

答えて

0

jspファイルでサーブレットに送信する各値の隠しフィールドを挿入します。 インサート内すると

<input type="hidden" name="lrnStr" /> 

のように()関数は、あなたはlrnStr非表示のフォームフィールドに各LRN値を追加するコードを記述する必要があります。

フォームを送信すると、このフィールドがコンマで区切られて使用されます。

function insert () { 
//use jquery here 
    $("#lrnStr").val($("#lrnStr").val()+","+$("#lrn").val()); 
    //same for other fields 
} 

サーブレットコードでは、次のコードを追加して値の一覧を取得する必要があります。

String lrnArray[] = null; 
String lrnStr = request.getParameter("lrnStr"); 

if(lrnStr!=null){ 
lrnArray = lrnStr.split(","); 
for (int i = 0; i<lrnArray.length; i++) { 
     if (i>0 && i%7==0) { 
      out.println("</tr><tr>"); 
     } 
     out.println("<td>" + lrnArray[i] + "</td>"); 
} 
} 
関連する問題