質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3308閲覧

jsp→java(servlet)へ二次元配列の渡し方

kosshi_s

総合スコア16

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/04/26 08:19

以下のJSP、JS(jQueryを使用)、Javaがあります。

tableタグの商品コードと数量をjsで行毎の配列(二次元配列)にして、JSPのid="id1"となっている部分のvalueに設定し、それをJavaでgetParameterValuesで取得しています。ただ、Java側では1次元の配列となってしまっています。2次元の配列としてjavaに渡すにはどの様にすれば良いでしょうか?

html

1【JSP】 2<%@ page language="java" contentType="text/html; charset=UTF-8" 3 pageEncoding="UTF-8"%> 4 5<%-- taglibディレクティブタグで、使用するタグライブラリを宣言 --%> 6<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 7 8 9<!DOCTYPE html> 10<html> 11<head> 12<meta charset="UTF-8"> 13<title>全部表示</title> 14</head> 15<body> 16 17<span>ようこそ!<c:out value="${sessionScope.loginget.username}" />さん</span><br><br> 18<input type="hidden" id="userid" name="user" value="${sessionScope.loginget.userid}"> 19 20<form method="post" action="/ECsite/basket" name="itemtable"> 21 22<table border="1"> 23<thead> 24<tr> 25<th><input type="checkbox" id="all"></th> 26<th>ID</th> 27<th>商品名</th> 28<th>値段</th> 29<th>購入数量</th> 30<th>金額</th> 31<th>在庫数</th> 32</tr> 33</thead> 34<tbody id="boxes"> 35<c:forEach var="item" items="${itemlists}"> 36 <tr> 37 <td><input type="checkbox" name="chkb"></td> 38 <td><input type="hidden" name="id" value="${item.id}">${item.id}</td> 39 <td><input type="hidden" name="proname" value="${item.name}">${item.name}</td> 40 <td><input type="hidden" name="price" value="${item.price}">${item.price}</td> 41 <td><input type="number" name="num" id="numid"></td> 42 <td><input type="number" name="sum" id="sumid" readonly></td> 43 <td><input type="hidden" name="stock" value="${item.stock}">${item.stock}</td> 44 </tr> 45</c:forEach> 46</tbody> 47</table> 48 49合計購入数:<input type="number" name="totalnum" id="totalnumid" readonly><br> 50合計金額:<input type="number" name="totalsum" id="totalsumid" readonly><br> 51 52<input type="submit" name="basket" id="basketid" value="カゴに入れる" > 53<INPUT type="button" onclick="history.back()" value="1つ前のページに戻る"> 54<input type="hidden" id="id1" name="id1name"> 55 56</form> 57 58<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 59<script type="text/javascript" charset="UTF-8" src="/ECsite/js/allitem.js"></script> 60<script type="text/javascript" charset="UTF-8" src="/ECsite/js/calcsum.js"></script> 61<script type="text/javascript" charset="UTF-8" src="/ECsite/js/allcheckbox.js"></script> 62<script type="text/javascript" charset="UTF-8" src="/ECsite/js/calctotalnum.js"></script> 63 64 65</body> 66</html> 67

html

1【JS】 2$("#basketid").click(function() { 3 var ids = []; 4 5 $('[name=chkb]:checked').each(function(){ 6 var itemid = null; 7 var num = null; 8 var price = null; 9 var tmparray = []; 10 11 //これで今いる箇所の親要素のtrを取得し、その中でname属性が「id」と「num」のvalue値を取得 12 var itemid = $(this).closest('tr').find('[name=id]').val(); 13 var num = $(this).closest('tr').find('[name=num]').val(); 14 15 tmparray.push(itemid); 16 tmparray.push(num); 17 console.log("tmparray =" +tmparray); 18 ids.push(tmparray); 19 20 }); 21 //取得した値はid属性が「id1」となっているタグのvalue属性へ設定。 22 $("#id1").val(ids); 23 });

html

1【Java】 2package select.ctrl; 3 4import java.io.IOException; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13import select.entity.ItemGet; 14 15/** 16 * Servlet implementation class saleBox 17 */ 18@WebServlet("/basket") 19public class basket extends HttpServlet { 20 21 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 22 23 //getParameter("id1name")でname属性が「id1name」のvalue属性を取得 24 String[] itemids = req.getParameterValues("id1name"); 25 System.out.println("itemid =" + itemids); 26 for (int i = 0; i < itemids.length; i++) { 27 System.out.println("itemid" +i+ "=" + itemids[i]); 28 } 29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そもそも配列なので正しく送信される気がしないので、もっと別のやり方考えた方が良さそうですが、強いてやるなら、JSON.stringify()して、Java側でパースするとかですかね。

投稿2020/04/26 08:22

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/26 11:42

草wwwwwwww 真面目に答えてんのウケるーーーー
kosshi_s

2020/04/26 20:54

配列はjavaに送れないのですね。別の方法を考えてみます。ありがとうございました。
m.ts10806

2020/04/26 21:20 編集

一応の代替案も回答後半に書いています。 あとは要件にあわせて色々考えてみてください。 一応nameで []をつけていけば配列にはなりますが 例: test[hoge][fuga][] それが今回の要件に合うかどうかは分からないので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問