JSPでDBのデータを表示してみています。
ブラウザでの表示レイアウトは
上側は1レコード分の入力・編集用フォーム
下側に全てのレコードの一覧を表示させています。
上側にはテキストボックスとセレクトボックスと[更新]ボタンを配置し
結果が下側のレコード一覧に反映されるというものです。
下側にはレコード毎に[編集][削除]ボタンを配置し
[編集]ボタンを押したら上側フォームに対象レコードのデータを抽出表示して
そこで各データを編集して、[更新]ボタンで更新されたレコードが
下側のレコード一覧に反映されるというような作りです。
お聞きしたいのは編集時に下側のレコードで[編集]ボタンを押して上側のフォームに反映する際
テキストボックスにはレコードIDに紐づいたデータが反映された状態ですが
セレクトボックスにはセレクトボックスのデータソースの先頭のデータが表示されている状態を
レコードに紐づけされたデータで表示するにはどのようにすれば良いかなのです。
★編集ボタンクリック時
ID2のレコードを編集していますが[会社名]セレクトボックスは先頭のデータのままです。
セレクトボックスの<option selectedの規定値にレコードのキーを入れてやれば表示されるかなと考え
以下のように「rec.getString("co_id")と同じならば~」のようなイメージでコードを書いてみたりしているのですが
エラーにもなりませんが希望する動作にできません。
Java
1[セレクトボックスのデータソース部分] 2<%@ page import="java.sql.ResultSet"%> 3<%@ page import="java.sql.SQLException"%> 4<%@ page import="java.sql.Statement"%> 5<%@ page import="java.sql.Connection"%> 6<%@ page import="java.sql.DriverManager"%> 7<% 8 Connection connect = null; 9 Statement s = null; 10 11 try { 12 Class.forName("org.postgresql.Driver"); 13 14 connect = DriverManager.getConnection("jdbc:postgresql://localhost:5433/ncdb" + 15 "?user=ncadmin&password=nc1"); 16 17 s = connect.createStatement(); 18 19 String sql = "SELECT * FROM t_company ORDER BY co_id"; 20 21 ResultSet rec = s.executeQuery(sql); 22%> 23<% 24 } catch (Exception e) { 25 // TODO Auto-generated catch block 26 out.println(e.getMessage()); 27 e.printStackTrace(); 28 } 29 30 try { 31 if(s!=null){ 32 s.close(); 33 connect.close(); 34 } 35 } catch (SQLException e) { 36 // TODO Auto-generated catch block 37 out.println(e.getMessage()); 38 e.printStackTrace(); 39 } 40%>
html
1<label for="co_id">会社名:</label> 2<select id="co_id" name="co_id" class="form-control" style="width: 200px;"> 3 <%while((rec!=null) && (rec.next())) { %> 4 <% if (Objects.equals(rec.getString("co_id"), String.valueOf(Co_id))) {%> 5 <option value="<%=rec.getString("co_id")%> selected"><%=rec.getString("company")%></option> 6 <% }else{%> 7 <option value="<%=rec.getString("co_id")%>"><%=rec.getString("company")%></option> 8 <%}%> 9 <%}%> 10</select>
java
1[DBから(一覧)のデータソース部分] 2<% 3List<Production_daily_report> list=(List<Production_daily_report>)request.getAttribute("list"); 4Production_daily_report production_daily_report_model=(Production_daily_report)request.getAttribute("production_daily_report"); 5String Pdr_id=production_daily_report_model==null ? "":String.valueOf(production_daily_report_model.getPdr_id()); 6String Record_date=production_daily_report_model == null ? "":production_daily_report_model.getRecord_date(); 7String Co_id=production_daily_report_model == null ? "":String.valueOf(production_daily_report_model.getCo_id()); 8String Fi_id=production_daily_report_model == null ? "":String.valueOf(production_daily_report_model.getFi_id()); 9String St_id=production_daily_report_model == null ? "":String.valueOf(production_daily_report_model.getSt_id()); 10String Ag_id=production_daily_report_model == null ? "":String.valueOf(production_daily_report_model.getAg_id()); 11String Sl_id=production_daily_report_model == null ? "":String.valueOf(production_daily_report_model.getSl_id()); 12String Quantity=production_daily_report_model == null ? "":production_daily_report_model.getQuantity(); 13 14String title=(String)request.getAttribute("title"); 15title=title==null? "登録してください。":title; 16String err=(String)request.getAttribute("err"); 17String msg=(String)request.getAttribute("msg"); 18%>
本やWebで調べながらですがよくわからないことが多く
意味不明なことがあればすいません
よろしくご指導お願いいたします。