
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Java-jspの画面入力値保持について
Java
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
-
4
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
5
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
6
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
7
StrutsでJSPからListを受け取りたい
Java
-
8
servletからjspへオブジェクトの配列情報を送る方法
Java
-
9
エラーページ遷移後に入力値を残す
Java
-
10
JSPでのArrayListの表示について困っています
Java
-
11
JSPでHashMap・配列の変数の値を扱う方法について
Java
-
12
リクエストに応じたselectedの初期値設定方法
Java
-
13
jspでのArrayListの値の表示
JavaScript
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
StrutsでJSPからListを受け取り...
-
DOMでXMLからデータを抽出する...
-
JSPでDBからデータ読み込みブラ...
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
Formの値が変更されたかどうか...
-
javaです
-
VBSエラー"オブジェクト型の変...
-
C# DataGridView列カスタマイズ
-
IF関数でEmpty値を設定する方法。
-
ORA-01858: 数値を指定する箇所...
-
C#でのWNetAddConnection3の使...
-
変数を動的に作るには?
-
コマンドプロンプトに不正な文...
-
matchesを否定文として使う方法...
-
POIでExcelに時刻(h:mm)の値を...
-
java 入力 3 4 3 出力 ABC DEFG...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
JSPでImportエラーになります
-
StrutsでJSPからListを受け取り...
-
hiddenの値が期待した値で取得...
-
requestの値が削除されません…
-
JSPでDBからデータ読み込みブラ...
-
PropertyNotFoundException解決...
-
Java Struts ~に対するゲッタ...
-
JSPからServletに、テーブルに...
-
JSPにて、変数を利用してフォン...
-
サーブレットjspで勤怠スケジュ...
-
全取得したデータをjspで順番に...
-
データベースに変数の値を挿入
-
1ページに10件ずつ表示したい
-
入力チェックとエラーメッセー...
-
java strutsでの一覧表の表示方...
-
<s:iterator>の値をリストで取...
-
JSFタグ<h:dataTable>でヘッダ...
-
strutsでlist型の入力を行うには
-
【struts】 ActionFormで別のAc...
おすすめ情報