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

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

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

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

Java

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

Q&A

解決済

2回答

15051閲覧

JSPでテーブルを更新画面で更新したいのですが

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

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

Java

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

0グッド

0クリップ

投稿2017/08/02 01:55

編集2017/08/02 02:52

一覧画面(employeelist.jsp)でラジオボタンでテーブルの行を選択して、
更新ボタンを押し、更新画面(update.jsp)遷移させ、
そこで選択した行の情報を更新したいのですが、
在職(retired)だけ更新されなくて困っています。

よろしくお願いします。

一覧画面(employeelist.jsp)

<%@ page contentType="text/html; charset=UTF-8"%> <%@ page import="java.util.List,kadai.Tableclass"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>社員一覧</title> </head> <body> <h2>社員一覧</h2> <table border="1"> <tr bgcolor="#afeeee"> <th></th> <th>社員コード</th> <th>氏名</th> <th>氏名カナ</th> <th>性別</th> <th>役職名</th> <th>所属部署名</th> <th>在職情報</th> <form action="UpdateServlet" id="form" name="form"> <c:forEach var="item" items="${list}" varStatus="num"> <tr> <td><input type="radio" name="radio" value="${num.index}"></td> <td>${item.s_id}</td> <td>${item.name }</td> <td>${item.name_kana }</td> <td>${item.sex }</td> <td>${item.clas }</td> <td>${item.depart_name }</td> <td>${item.retired }</td> </tr> </c:forEach> </table> <br> <input type="submit" value="削除" onclick="goServlet();"> <input type="button" value="登録" onclick="location.href='DepartServlet'"> <input type="submit" value="更新" > <!-- UpdateServlet --> <input type="button" value="戻る" onclick="location.href='kintaikanrisystem.jsp'"> </form> </body> </html>

UpdateServlet

package kadai; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Updatehokanko */ public class UpdateServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public UpdateServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); request.setCharacterEncoding("UTF-8"); System.out.println("UpdateServletに接続しました。"); Connection con =null; Statement smt=null; String num1=request.getParameter("radio"); int num=Integer.parseInt(num1); String sql = "SELECT e.s_id,e.l_name,e.f_name,e.l_name_kana,e.f_name_kana,e.sex,e.class,e.depart_id,e.last_update,e.retired,d.depart_id,d.depart_name FROM employee AS e INNER JOIN depart AS d ON e.depart_id=d.depart_id limit "+num+","+1; try{ con=DBManager.getConnection(); smt=con.createStatement(); ResultSet rs =smt.executeQuery(sql); List<Tableclass> list=new ArrayList<Tableclass>(); while(rs.next()){ Tableclass tableclass=new Tableclass(); tableclass.setS_id(rs.getString("S_id")); tableclass.setL_name(rs.getString("L_name")); tableclass.setF_name(rs.getString("F_name")); tableclass.setL_name_kana(rs.getString("L_name_kana")); tableclass.setF_name_kana(rs.getString("F_name_kana")); tableclass.setSex(rs.getInt("Sex")); tableclass.setClas(rs.getString("class")); tableclass.setDepart_name(rs.getString("depart_name")); tableclass.setRetired(rs.getInt("Retired")); list.add(tableclass); } request.setAttribute("list",list); }catch(SQLException e){ throw new ServletException(e); }finally{ if(smt != null){ try{smt.close();}catch(SQLException ignore){} }if(smt != null){ try{con.close();}catch(SQLException ignore){} } } String url = "/UpdateDepartServlet"; RequestDispatcher dispatch = request.getRequestDispatcher(url); dispatch.include(request, response); request.getRequestDispatcher("/update.jsp").forward(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h2>社員更新</h2> <form action="Update"> <c:forEach var="item1" items="${list}"> <table border="1"> <tr> <td>社員コード</td> <td><input type="text" name="new_id" value="${item1.s_id}" readonly="readonly" > </td> <!-- readonly「読み出し専用指定」 --> </tr> <tr> <td>氏名(姓)</td> <td><input type="text" name="new_name1" maxlength='20' value="${item1.l_name}"></td> <td>氏名(名)</td> <td><input type="text" name="new_name2" maxlength='20' value="${item1.f_name}"></td> </tr> <tr> <td>氏名カナ(姓)</td> <td><input type="text" name="new_kananame1" maxlength='100' value="${item1.l_name_kana}"></td> <td>氏名カナ(名)</td> <td><input type="text" name="new_kananame2" maxlength='100' value="${item1.f_name_kana}"></td> </tr> <tr> <td>性別</td> <td><input type="radio" name="sex" value="1" id="otoko"><label for="otoko">男</label></td> <td><input type="radio" name="sex" value="2" id="onna"><label for="onna">女</label></td> <td><input type="radio" name="sex" value="3" id="sonota"><label for="sonota">その他</label></td> </tr> <script type="text/javascript"> document.forms[0].sex["${item1.sex}"-1].checked = true; </script> <tr> <td>役職名</td> <td><select name="new_class" id="new_class"> <option value="部長">部長 <option value="課長">課長 <option value="主任">主任 <option value="担当">担当 <option value="アシスタント">アシスタント </select></td> </tr> <script type="text/javascript"> var options = document.getElementById('new_class').options; for(var i = 0; i < options.length; i++){ if(options[i].text === '${item1.clas}'){ options[i].selected = true; break; };}; </script> <tr> <td>所属部署名</td> <td><select name="new_depart_name" id="new_depart_name"> <c:forEach var="item2" items="${list1}" varStatus="status2"> <option value="${item2.depart_id}">${item2.depart_name} </c:forEach> </select></td> </tr> <script type="text/javascript"> var options = document.getElementById('new_depart_name').options; for(var i = 0; i < options.length; i++){ if(options[i].text === '${item1.depart_name}'){ options[i].selected = true; break; };}; </script> <tr> <td>在職</td> <td><input type="radio" name="retired" value="0">在職</td> <td><input type="radio" name="retired" value="1">退職</td> <script type="text/javascript"> document.forms[0].retired["${item1.retired}"].checked = true; </script> </tr> </table> </c:forEach> <br> <input type="submit" name="update" value="更新"> <input type="button" name="return" value="戻る" onclick="location.href='KintaikanrisystemServlet'"> </form> </body> </html>

文字制限のため Update.java を回答に記載しました。

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

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

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

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

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

m.ts10806

2017/08/02 02:09

大文字と小文字の差異は関係ないですか?
退会済みユーザー

退会済みユーザー

2017/08/02 02:26 編集

mts10806 さん 小文字にして試したのですが変化ありませんでした。気付いたことがあるのですが、元が退職(1)のやつを在職(0)にするのはできました。逆ができません。
m.ts10806

2017/08/02 02:30

2とか3とか他の数字にするとどうですか?
退会済みユーザー

退会済みユーザー

2017/08/02 02:34

mts10806さん value属性をですか?変えてみましたができませんでした。
m.ts10806

2017/08/02 02:38

んーあと試してもらいたいのはradioをselectにしてみるとかでしょうか。なんとなくラジオボタンの特性のような気がします。あと、それぞれのフォームの直後にデフォルト値を指定するjavascriptが書かれているのも気になります。htmlだけで対応できるように思うのですが。。
退会済みユーザー

退会済みユーザー

2017/08/02 02:44

mts10806 さん 試してみます。Update.java を文字制限で記載できていなかったので、回答に記載しました。よろしくお願いします。
guest

回答2

0

ベストアンサー

問題を切り分ける必要があって、
Update.javaのString retired1=request.getParameter("retired");でretired1に値が取れているのか、いないのかどちらでしょうか?
※そもそもDBに反映するには
int retired=0;
にリクエストから取得した値を入れる必要があると思うが...。
あと必須チェックのname1==""等の文字列比較は間違い。

投稿2017/08/02 04:33

kurokoba

総合スコア276

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

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

退会済みユーザー

退会済みユーザー

2017/08/02 05:19 編集

kurokobaさん  回答ありがとうございます。更新できるようになりました。 retired1に値が取れていなかったので値を取得して、 int retired=0;を消しました。 ・必須チェックのname1==""等の文字列比較は間違い ⇒勉強不足ですみません。なぜ間違いなのでしょうか?
kurokoba

2017/08/02 05:35

JavaのStringの==比較は文字列の中身ではなくて置き場所の比較になっちゃいます。 (他の言語ではその限りではない。例えばC#の文字列比較は==で良い)。 例えばこの記事どうでしょうか? http://www.sejuku.net/blog/14621 ※これは超重要事項なのであらゆる手段を使って理解してください。
退会済みユーザー

退会済みユーザー

2017/08/02 06:58

kurokobaさん  ご教示ありがとうございます。 同じ値なのに「==」で比較すると違う結果になることがあるので、 比較する方法が間違っているということですね。 理解できました。わかりやすい説明ありがとうございます。
guest

0

本文の文字制限のためこちらに記載

Update.java

package kadai; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Update */ public class Update extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Update() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection con =null; PreparedStatement smt=null; String message2=null; int b=0; request.setCharacterEncoding("UTF-8"); try{ con=DBManager.getConnection(); String id=request.getParameter("new_id"); String name1=request.getParameter("new_name1"); String name2=request.getParameter("new_name2"); String kana_name1=request.getParameter("new_kananame1"); String kana_name2=request.getParameter("new_kananame2"); String sex1=request.getParameter("sex"); int sex=Integer.parseInt(sex1); String new_class=request.getParameter("new_class"); String depart_id=request.getParameter("new_depart_name"); String retired1=request.getParameter("retired"); Calendar cd=new GregorianCalendar(); SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd"); String sd1=sd.format(cd.getTime()); int retired=0; if(name1==null || name2==null || kana_name1==null || kana_name2==null || name1=="" || name2=="" || kana_name1=="" || kana_name2==""){ message2="氏名・氏名カナを入力してください。"; b=1; request.setAttribute("message2",message2); } if( b==0){ String sql="update employee set l_name=?, f_name=?, l_name_kana=? ,f_name_kana=?," + " sex=?, class=?, depart_id=? ,last_update=?, retired=? where s_id=?"; smt=con.prepareStatement(sql); smt.setString(1, name1); smt.setString(2, name2); smt.setString(3, kana_name1); smt.setString(4, kana_name2); smt.setInt(5, sex); smt.setString(6, new_class); smt.setString(7, depart_id); smt.setString(8, sd1); smt.setInt(9, retired); smt.setString(10, id); int in =smt.executeUpdate(); } }catch(SQLException e){ throw new ServletException(e); }finally{ if(smt != null){ try{smt.close();}catch(SQLException ignore){} }if(smt != null){ try{con.close();}catch(SQLException ignore){} } }if(b==0){request.getRequestDispatcher("KintaikanrisystemServlet").forward(request,response);} else if( b==1){request.getRequestDispatcher("/update.jsp").forward(request,response);} } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }

投稿2017/08/02 02:43

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問