
JSPに日付、資産名、社員番号、社員名、備考とボタンを各行に配置したテーブルがあります。
ここから資産名をServletに渡して、それを基に別のJSPに別のテーブルを表示させるコードを考えています。
現状のコードは以下(抜き出し)
【JSP】
<table>
<tr>
<td>状態</td>
<td>社員番号</td>
<td>社員名</td>
<td>機種</td>
<td>備考</td>
<td></td>
</tr>
<%
List list = (List)request.getAttribute("list");
int Cnt;
for(Cnt=0; Cnt<list.size(); Cnt++){
Account account = (Account)list.get(Cnt);
%>
<tr>
<!-- Beansに格納したSQLの実行結果を呼び出す -->
<td><%=account.getLendingReturnFlag() %></td>
<td><%=account.getEmployeeCode() %></td>
<td><%=account.getEmployeeName() %></td>
<td><%=account.getMaker() %>
<%=account.getMachineType() %></td>
<td><%=account.getRemarks() %></td>
<td>
<!-- 資産NoをServletに渡すために、hiddenに"No_カウンタ"という名前をつけて格納 -->
<input type="hidden" name="No_" + "<%=Cnt%>" value="<%=account.getAssetNo()%>">
<!-- 資産Noと同じ行のボタンを判別するため、"id_カウンタ"という名前をつけて資産Noを格納 -->
<!-- 現状ではボタンに資産Noが表示されていますが、これは後から「資産詳細」に直す予定 -->
<input id="<%=Cnt%>" name="id_" + "<%=Cnt%>" type="submit" value="<%=account.getAssetNo()%>">
</td>
</tr>
<%
}
%>
</table>
<!-- 現在表示している一覧が何行あるかを"Cnt_sum"という名前をつけて格納 -->
<input type="hidden" name="Cnt_sum" value="<%=Cnt%>">
</form>
<FORM>
<input type="button" value="戻る" onClick="history.back()"></div>
</FORM>
【Servlet】
package history;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import db.*;
import java.util.*;
public class HistoryDetailServ extends HttpServlet {
private static final long serialVersionUID = 444896L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//エンコードを指定
response.setContentType("text/html; charset=Windows-31J");
request.setCharacterEncoding("Windows-31J");
//前画面でテーブルが何行だったかを呼び出す
int Cnt_sum = Integer.parseInt(request.getParameter("Cnt_sum"));
//上記のテストコード
System.out.println(Cnt_sum);
String pc_id = "";
String No = "";
String id = "";
//テーブルの行数分、繰り返しを行うfor文
for(int Cnt=1; Cnt<=Cnt_sum; Cnt++){
//"No_カウンタ"という名前で格納されている値を呼び出す(資産No)
No = request.getParameter("No_" + Cnt);
for(int Cnt_2=1; Cnt_2<=Cnt_sum; Cnt_2++){
//"id_カウンタ"という名前で格納されている値を呼び出す(資産No)
id = request.getParameter("id_" + Cnt_2);
//上記のテストコード
System.out.println(No);
System.out.println(id);
//上記2つの値が等しいときに処理を行うif文
if(No==id){
//SQLの取得に使用する変数に、Noを格納
pc_id = No;
//上記のテストコード
System.out.println(pc_id);
}
}
}
//DB接続
ServletContext sc = getServletContext();
DbControl db_Con = new DbControl(sc);
try{
となっています。
テスト用のコードの実行結果(コンソールに出力しました)を見ると、テーブルが何行だったかを示すCnt_sumは正しくServletに渡っているようですが、残る3つはnullが返ってきてしまいました。
for文のあたりからが怪しいのは判るのですが、値を取得するコードに間違いがあるのか、for文そのものに問題があるのか・・・など考えたまま数時間経っても解決しなかったので質問させていただきます。
No.1ベストアンサー
- 回答日時:
No+カウンタ
<input type="hidden" name="No_" + "<%=Cnt%>" value="<%=account.getAssetNo()%>">
ってあるけど、name属性が「"No_" + "<%=Cnt%>"」ってなってるよ。
属性に「+」って使えたっけ?
id+カウンタ
<input id="<%=Cnt%>" name="id_" + "<%=Cnt%>" type="submit" value="<%=account.getAssetNo()%>">
これってtypeがsubmitになってるよ。
だからないんじゃない?
その他
<FORM>
<input type="button" value="戻る" onClick="history.back()"></div>
</FORM>
<div>の開始タグがないのに閉じタグがあるよ。
お礼が遅くなって申し訳ありません;
name属性に「+」は使えないんですか?
なるほど、それでServlet側でprintoutすると「name_null」と表示されていたんですね。
id+カウンタで回している側は仕様としてボタンを配置しているので、直接ボタンに値を入れようかと思ったのですが・・・渡すのには不都合がある・・・んですかね。
最後の<div>の開始タグは抜粋した位置より前にありました。
切る位置が悪かったようで、ご迷惑おかけしました;
結局値を2つ渡すのは諦めて、
<button type="submit" value=="<%=account.getAssetNo()%>">資産詳細</button>
として各ボタンそれぞれに値を入れてsubmitし、Servletで改めてAssetNoを基にほかのデータを取得することにしました。
今回は上記の形で作成し、土日など空いた日を使って最初の内容での実現方法も続けたいと思います。
長いコードになってしまったにも関わらず、細かく目を通していただきありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- JavaScript 画像の表示位置 3 2022/12/23 08:25
このQ&Aを見た人はこんなQ&Aも見ています
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
-
4
Java-jspの画面入力値保持について
Java
-
5
リクエストに応じたselectedの初期値設定方法
Java
-
6
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
7
servletからjspへオブジェクトの配列情報を送る方法
Java
-
8
JSPからJSPへ情報を渡せる?
Java
-
9
StrutsでJSPからListを受け取りたい
Java
-
10
Javascriptの値をJava(JSP)へ渡す方法
Java
-
11
tableタグとformタグの組み合わせ
HTML・CSS
-
12
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
13
htmlでテーブル内にテキストボックスを作りたいのですが・・・
HTML・CSS
-
14
sessionスコープとapplicationスコープ
Java
-
15
1つのform内に2つのsubmitボタンがあり、action属性がそれぞれで異なる場合
JavaScript
-
16
JSPからServletへの遷移
Java
-
17
jspでjavascript関数へ引数を渡す方法
Java
-
18
JSPでのサブミット判定
Java
-
19
[JSP]1Servletから複数フレームにパラメータ渡し
Java
-
20
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでImportエラーになります
-
オブジェクトの中のプロパティ...
-
StrutsでJSPからListを受け取り...
-
JSPにて、変数を利用してフォン...
-
入力チェックとエラーメッセー...
-
No such validation エラー
-
requestの値が削除されません…
-
Java Struts ~に対するゲッタ...
-
オブジェクトの中のプロパティ...
-
テーブルの初期化
-
JSP DB 表示
-
JSPからServletに、テーブルに...
-
JSPでDBからデータ読み込みブラ...
-
<s:iterator>の値をリストで取...
-
Enumのname()とtoString()の違...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
-
1~100までの数字を表示したい
-
ORA-01858: 数値を指定する箇所...
-
Javaで文字と数字が混ざったも...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
StrutsでJSPからListを受け取り...
-
JSPでImportエラーになります
-
hiddenの値が期待した値で取得...
-
Java Struts ~に対するゲッタ...
-
JSPからServletに、テーブルに...
-
JSPにて、変数を利用してフォン...
-
<s:iterator>の値をリストで取...
-
全取得したデータをjspで順番に...
-
requestの値が削除されません…
-
iterateで受け取った値を処理に...
-
【Struts】bean:writeタグのpro...
-
strutsでlist型の入力を行うには
-
同時アクセス時の動作
-
JSPでDBからデータ読み込みブラ...
-
WebWork(struts2)でのパラメー...
-
PropertyNotFoundException解決...
-
java strutsでの一覧表の表示方...
-
Enumのname()とtoString()の違...
-
JSFタグ<h:dataTable>でヘッダ...
おすすめ情報