Java初心者でフォルダ管理ツールの様な物を作成しています。
その際、
<form name="fm"> <h1>検索結果画面</h1> <h2>名前をクリックするとダウンロードします。</h2> <table style="text-align: center;"> <tr> <th>フォルダ名</th> <th>ステータス</th> <th>最終更新日</th> </tr> <% List cName = (ArrayList) request.getAttribute("cName"); for (int i = 0; i < cName.size();) { out.println("<tr><td><a href=\"/~/~/" + cName.get(i) + ".zip\" download=\"" + cName.get(i) + ".zip\">" + cName.get(i) + "</a></td>"); Object obj = cName.get(i); String content = obj.toString(); %> <% i++; if (cName.get(i).equals("0")) { %> <td> <select name="status" onchange="javascript:Change()"> <option value="0" selected>未完</option> <option value="<%out.print(content + "1"); %>" style="color:red;">[仕掛中]に変更</option> <option value="<%out.print(content + "2"); %>" style="color:blue">[完成]に変更</option> </select> </td> <% } if (cName.get(i).equals("1")) { %> <td> <select name="status" style="color:red;" onchange="javascript:Change()"> <option value="<%out.print(content + "0"); %>" style="color:black">[未完]に変更 </option> <option value="1" style="color:red" selected>仕掛中</option> <option value="<%out.print(content + "2"); %>" style="color:blue">[完成]に変更 </option> </select> </td> <% } if (cName.get(i).equals("2")) { %> <td> <select name="status" style="color:blue;" onchange="javascript:Change()"> <option value="<%out.print(content + "0"); %>" style="color:black">[未完]に変更</option> <option value="<%out.print(content + "1"); %>" style="color:red;">[仕掛中]に変更</option> <option value="2" style="color:blue" selected>完成</option> </select> </td> <% } i++; %> <td> <% out.println(cName.get(i)); i++; %> </td> </tr> <% } %> </table>
以上のようなテーブルを作成し、一覧表示を行っております。
そこで、その際ステータスの表示をセレクトタグで行い、それがチェンジされたら、[onchange]によってJavaScriptを起動し、サーブレットに送信するという動作を行っています。
しかし、現状だと、上手くサーブレットにこのオプションタグがチェンジされたよ!というのが送れず、その後の処理として考えている、
○○というフォルダのステータスが0、つまり未完に変えてほしいとリクエストがあったのでDBアップデートしてください、というのに上手く繋げられていません。
なので今はステータス部分をセレクトからアンカータグにし、ステータスアップデート専用のサーブレットにリンクさせ、そこから新しいHTMLに飛ばし、手動でフォルダ名と変えたいステータスを入力してもらうという形にしようかと考えています。
非常に長く分かりづらい文になってしまいましたが、ステータスをセレクトタグを使い上手く決まったフォルダのDBだけステータスをアップデートする方法はないでしょうか?
--追記--
Javascriptのコードです。
1function Change(){ 2 obj = document.fm.status; 3 index = obj.selectedIndex; 4 if(index != 0){ 5 content = obj.options[index].value; 6 document.getElementById("hiddenField").value=content; 7 } 8 document.fm.action = "/~/~/サーブレット名"; 9 document.fm.target = "_self"; 10 document.fm.method = "post"; 11 document.fm.submit(); 12 }
hiddenに送っている記述は色々試したまま消し忘れている物です。
実際はサーブレットへの遷移にしか使っていません・・・。
回答1件
あなたの回答
tips
プレビュー