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

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

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

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

受付中

【JSP】社員一覧表で同一画面で遷移するようにしたい

syu2048
syu2048

総合スコア22

JSP

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

0回答

0評価

0クリップ

178閲覧

投稿2022/07/13 02:32

編集2022/07/13 05:03

前提

現在、社員の一覧表を作成しています。
内容は以下の通りです。
・社員番号
・氏名
・支社、部署等の所属先
・所持資格
・登録協会
・CPD単位ポイント数

実現したいこと

初期段階の一覧表では全社員が表示されていますが、一覧表の上に、「本社」や「関東支社」など各支社の名称のリンクを作成し、これをクリックすることで、同一のjsp画面で遷移し、選択した支社に所属する社員のみ表示されるようにしたいです。
表示される画面のイメージは以下の通りです。

<初期状態>
●社員一覧表

全社本社北海道東北関東中部関西九州
社員番号氏名本部名支社名部名課名保有資格登録協会CPD備考
11111A本社経営本部人事部-ae50-
22222B本社経営本部情報部-bf50-
33333C関東支社経営本部企画部-cg60-
44444D関西支社経営本部技術部-dh40-

<「本社」をクリックした場合>
●社員一覧表

全社本社北海道東北関東中部関西九州
社員番号氏名本部名支社名部名課名保有資格登録協会CPD備考
11111A本社経営本部人事部-ae50-
22222B本社経営本部情報部-bf50-

発生している問題

前任者が作成したコードでは、同一画面に遷移する方法が上手くできなかったのか、
各支社で個別にjspファイルのリンクを作成することで疑似的に選択した支社の一覧表を表示させていました。
しかしこの場合、どこか1つのjspファイルを修正する際、他の全てのjspファイルも修正しなければならない手間がかかるので、今回はこれを作り直して、同一の画面で表示させるようにしたいと思っています。

該当のソースコード

質問事項と直接関係ない部分もあると思いますが、ご容赦ください。

JSP

<!-- リース情報・データ表示 --> <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import = "java.sql.*" %> <%@ page import = "java.util.*" %> <%@ page import = "java.io.*" %> <%@ page import = "java.text.*" %> <%@ include file="../../DB/PostDBConnect_test.jsp" %> <%@ include file="../../DB/FCN.jsp" %> <%! //8ケタの年月日を(西暦.月.日)に変換する public String Dateconv_wareki9(String s) { try { String sYear = Integer.toString(Integer.parseInt(s.substring(0,4))-1988); String sMonth = s.substring(4,6); String sDay = s.substring(6,8); String sConvstr = sYear + "."; sConvstr += Integer.toString(Integer.parseInt(sMonth)) + "."; if (sDay.equals("00") == false) { if (sDay.equals("33") == true) { sConvstr += "上旬"; } else if (sDay.equals("66") == true) { sConvstr += "中旬"; } else if (sDay.equals("99") == true) { sConvstr += "下旬"; } else { sConvstr += Integer.toString(Integer.parseInt(sDay)); } } return sConvstr; } catch (Exception e) { return "-"; } } %> <%! //8ケタの年月日を(西暦.月.日)に変換する public String Dateconv_warekiHR9(String s) { try { String sYear = Integer.toString(Integer.parseInt(s.substring(0,4))-1988); String sMonth = s.substring(4,6); String sDay = s.substring(6,8); String sGengo = ""; if (Integer.parseInt(s.substring(0,8)) > 20190430) { sGengo = "R"; sYear = Integer.toString(Integer.parseInt(s.substring(0,4))-2018); } else { sGengo = "H"; } String sConvstr = sGengo + sYear + "/"; sConvstr += Integer.toString(Integer.parseInt(sMonth)) + "/"; if (sDay.equals("00") == false) { if (sDay.equals("33") == true) { sConvstr += "上旬"; } else if (sDay.equals("66") == true) { sConvstr += "中旬"; } else if (sDay.equals("99") == true) { sConvstr += "下旬"; } else { sConvstr += Integer.toString(Integer.parseInt(sDay)); } } return sConvstr; } catch (Exception e) { return "-"; } } %> <html> <head> <title>単位取得状況</title> <style type="text/css"> .Header { font-size:11pt; background-color: CCCCCC; font-family:MSPゴシック; text-align:center; } .Content1 { font-size:10pt; text-align: center; font-family:MSP明朝; } .Content2 { font-size:10pt; text-align: left; font-family:MSP明朝; } </style> <style type="text/css" media="screen"> div.scroll_div { overflow: auto; } </style> </head> <script type="text/javascript" src="../../DB/fixed_midashi.js"></script> <script language="JavaScript"> <!-- function Manu() { window.open("./manu.pdf","manu","toolbar=0"); } //--> </script> <body onLoad="FixedMidashi.create();"> <basefont size=3 color="black"> <% String rHonbuid = request.getParameter("HONBUIDR2"); if (rHonbuid == null) { rHonbuid = "1"; } //DB接続 Connection con = DriverManager.getConnection(url, user, password); Statement stmt = con.createStatement(); ResultSet rs; String sSql = ""; //表示項目設定SQL sSql = "SELECT "; sSql += "TM.社員番号,"; sSql += "TM.氏名,"; sSql += "TM.所属,"; sSql += "TM.支社,"; sSql += "TM.所属コード,"; sSql += "TM.支社コード,"; sSql += "TM.経歴,"; sSql += "SH.所属,"; sSql += "SH.支社,"; sSql += "SH.支店名,"; sSql += "SH.部名,"; sSql += "SH.課名,"; sSql += "TS.氏名,"; sSql += "TS.資格,"; sSql += "TK.氏名,"; sSql += "TK.協会,"; sSql += "TP.氏名,"; sSql += "TP.CPD,"; sSql += "TB.氏名,"; sSql += "TB.備考"; sSql += " FROM t_社員マスタ AS TM"; sSql += " INNER JOIN t_所属名称 AS SH"; sSql += " ON TM.所属 = SH.所属"; sSql += " INNER JOIN t_CPDポイント AS TP"; sSql += " ON TM.氏名 = TP.氏名"; sSql += " LEFT OUTER JOIN t_資格所持者 AS TS"; sSql += " ON TM.氏名 = TS.氏名"; sSql += " LEFT OUTER JOIN t_協会加入者 AS TK"; sSql += " ON TM.氏名 = TK.氏名"; sSql += " LEFT OUTER JOIN t_備考 AS TB"; sSql += " ON TM.氏名 = TB.氏名"; sSql += " WHERE TM.支社コード = '0'"; sSql += " ORDER BY TM.所属コード ASC, TM.経歴 DESC, TM.社員番号 ASC"; %> <table align="center" cellpadding=3 cellspacing=0 width="1450"> <tr><td> <h3>●社員一覧表</h3> </td></tr> <tr><td> <table width="1200" cellpadding=2 bgcolor="brown" cellspacing=1 align="left"> <tr> <td width="12%" align="center" bgcolor="red"><font color="white"><b>全社</b></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_1.jsp">本社</a></td> <td width="16%" align="center" bgcolor="white"><a href="../display/display_CPD_2.jsp">北海道支社</a></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_3.jsp">東北支社</a></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_4.jsp">関東支社</a></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_5.jsp">中部支社</a></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_6.jsp">関西支社</a></td> <td width="12%" align="center" bgcolor="white"><a href="../display/display_CPD_7.jsp">九州支社</a></td> </tr> </table> </td></tr> <tr><td> <div class="scroll_div" height=px"800"> <!-- <table border cellpadding=2 cellspacing=0 border width=1000> --> <table _fixedhead="rows:2; cols:5;" cellpadding=2 cellspacing=0 border width="1000"> <tr> <th width="50" class="Header" nowrap rowspan="2" >社員<br>番号</th> <th width="75" class="Header" nowrap rowspan="2" >氏名</th> <th width="100" class="Header" nowrap rowspan="2" >本部名</th> <th width="100" class="Header" nowrap rowspan="2" >支社名</th> <th width="100" class="Header" nowrap rowspan="2" >部名</th> <th width="125" class="Header" nowrap rowspan="2" >課名</th> <th width="100" class="Header" nowrap rowspan="4" >保有資格</th> <th width="125" class="Header" nowrap rowspan="5" >登録協会</th> <th width="200" class="Header" nowrap rowspan="5" >CPD</th> <th width="150" class="Header" nowrap rowspan="2" >備考</th> </tr> <% String sSyain = ""; String sName = ""; String sShishamei = ""; String sShitenmei = ""; String sBumei = ""; String sKamei = ""; String sShikakugi = ""; String sKyokaigi = ""; String pTotal = ""; String sBikou = ""; rs = stmt.executeQuery(sSql); while (rs.next()) { sSyain = rs.getString("社員番号"); sName = rs.getString("氏名"); sShishamei = rs.getString("支社"); sShitenmei = rs.getString("支店名"); sBumei = rs.getString("部名"); sKamei = rs.getString("課名"); sShikakugi = rs.getString("資格"); sKyokaigi = rs.getString("協会"); pTotal = rs.getString("CPD"); sBikou = rs.getString("備考"); out.println("<tr>"); out.println("<td class=\"Content1\">" + sSyain + "</td>"); out.println("<td class=\"Content1\">" + sName + "</td>"); out.println("<td class=\"Content1\">" + sShishamei + "</td>"); out.println("<td class=\"Content1\">" + sShitenmei + "</td>"); out.println("<td class=\"Content1\">" + sBumei + "</td>"); out.println("<td class=\"Content1\">" + sKamei + "</td>"); out.println("<td class=\"Content1\">" + sShikakugi + "</td>"); out.println("<td class=\"Content1\">" + sKyokaigi + "</td>"); out.println("<td class=\"Content1\">" + pTotal + "</td>"); out.println("<td class=\"Content2\">" + sBikou + "</td>"); out.println("</tr>"); } rs.close(); out.println("</table></div>"); stmt.close(); con.close(); %> </td></tr> </table> <br> </form> </body> </html>

試したこと

一覧表の上に各支社のリンクを挿入するのが理想ですが、他の社員一覧表のページのjspの文章を参考にして、試しに以下のコードを入力しました。

<br> <table align="center" width="1000" border> <tr height=5></tr> <tr><td> <%= sShishamei %> </td></tr> </table>

コードを挿入した部分は、一覧表の<table>句が終了した後です。

out.println("</table></div>"); stmt.close(); con.close(); %> </td></tr> </table> ←ココ <br> </form> </body> </html>

この場合、「本社」と表示されるのみで、他の支社名は表示されない状態になりました。

条件分岐をうまくできるようにする方法を
ご教授いただけたら幸いです。
どうぞよろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JSP

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