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

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

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

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

Java

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

Q&A

解決済

2回答

1931閲覧

JAVAプログラムからSELECTしたListがJSPで出力できない

koooma

総合スコア14

JSP

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

Java

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

0グッド

0クリップ

投稿2016/11/19 11:48

###前提・実現したいこと
JAVAプログラムからMySQLでSELECTしたListをJSPで表示できません。
以前別の人間が作成したもの真似て作りこんだのですがどこが違うか教えていただきたいです。

状況としてはeclipseのコンソール画面にはListに値が入っていることが確認できていますがJSPにデータが渡っていないようです。コンソールには表示されているのでJAVAプログラムに問題はないと思うのですが、ご意見を聞かせてください。

###ちゃんと表示される別の人間が作成したJAVAプログラム(超抜粋)
・・・
private List<?> personalStatusList;
・・・
// getPersonalCycleStatusListでSELECTを発行。
personalCycleStatusList = showStatusService.getPersonalCycleStatusList(a, b, c);

// この中Listの中にSELECTした結果が表示されたことを確認しました。 logger.info(personalCycleStatusList); // ここでpersonalCycleStatusListをset。 setPersonalCycleStatusList(personalCycleStatusList); return "cycle"; }

・・・
public void setPersonalCycleStatusList(List<?> personalCycleStatusList) {
this.personalCycleStatusList = personalCycleStatusList;
}
###ちゃんと表示される別の人間が作成したJSPプログラム(超抜粋)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@taglib prefix="c" uri="/WEB-INF/c-rt.tld"%>

<!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"> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="imagetoolbar" content="false" /> <script type="text/javascript" src="${pageContext.request.contextPath}/js/common.js"></script> <title>ほげほげほげ</title> </head> <body> <form name="showStatusCycleForm" action="" method="post">

・・・以下で表示されます。

<c:forEach items="${personalCycleStatusList}" var="cycle"> <td>${cycle.RESERVE_NO}</td> <td>${cycle.PURPOSE_TYPE}</td> <td>${cycle.CONFERENCE_NAME}</td>

・・・

</c:forEach>

###表示されない別のJAVAプログラム(超抜粋)
・・・
private List<?> personalWorkStatusList;

・・・
// selectWorkStatusで先ほどとは異なるSELECTを発行。
personalWorkStatusList = editStatusService.selectWorkStatus(a,b);

// この中Listの中にSELECTした結果が表示されたことを確認しました。 logger.info(personalWorkStatusList); // ★ここでpersonalWorkStatusListをsetしているはずなのですが出ません。 setPersonalWarkStatusList(personalWorkStatusList); return "query"; }

・・・
public void setPersonalWarkStatusList(List<?> personalWorkStatusList) {
this.personalWorkStatusList = personalWorkStatusList;
}

###表示されないJSPプログラム(超抜粋)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@taglib prefix="c" uri="/WEB-INF/c-rt.tld"%>

<!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"> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Cache-Control" content="no-cache" /> <meta http-equiv="Expires" content="0" /> <meta http-equiv="imagetoolbar" content="false" /> <script type="text/javascript" src="${pageContext.request.contextPath}/js/common.js"></script> <script language="JavaScript" src="${pageContext.request.contextPath}/js/calendar.js"></script> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/calendar.css"> <title>ほげほげ2</title> </head> <body> <form name="editStatusForm" action="" method="post">

・・・以下で表示されません。★
<c:forEach items="${personalWorkStatusList}" var="work">
<tr>
<th class="subHeader_25">ほげ1</th>
<td class="content_75" colspan="3">
${work.RESERVE_NO}
</td>
</tr>
<tr>
<th class="subHeader_25">ほげ2</th>
<td class="content_75" colspan="3">
${work.CONFERENCE_NO}
</td>
</tr>
・・・
</c:forEach>

###最後に
ここで記載したプログラムは全て別ファイルで、記載した箇所は別の人間が作成した箇所を意識して真似た箇所です。ほとんど差がないので、記載していないところに問題がある気がしますが見当がつかず、何かヒントを頂ければと思います。

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

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

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

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

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

guest

回答2

0

ベストアンサー

"超抜粋"の中で、抜粋に書かれていない箇所で、サーブレット→JSPへ値を渡しているのがいるでしょう。

サーブレットとJSPは、それぞれ別のサーブレットになりますので、クラス間をつなぐために、リクエスト属性へセッション属性などに変数を格納しなければ値が渡されません。

投稿2016/11/21 00:40

A-pZ

総合スコア12011

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

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

koooma

2016/11/21 02:51

ご回答ありがとうございます。 一つ気づいたことがあります。JSPの画面ではListの他に日付も出力しており、日付はJSP出力されていました。ListはListで何か設定が必要ということでしょうか?
A-pZ

2016/11/21 03:05

JSPへ値を渡すために、request.setAttribute("名前",変数); としている箇所があるのではないでしょうか。
guest

0

動くほうのソースが、

//ここでpersonalCycleStatusListをset。
setPersonalCycleStatusList(personalCycleStatusList);
return "cycle";
}

で、setした後、returnをcycleと扱って、JSPで

<c:forEach items="${personalCycleStatusList}" var="cycle">

のように扱っているので

動かないほう、

// ★ここでpersonalWorkStatusListをsetしているはずなのですが出ません。
setPersonalWarkStatusList(personalWorkStatusList);
return "query";

}

も、まねをするなら、

<c:forEach items="${personalWorkStatusList}" var="work">

java側のreturnをworkとするか、varをqueryで扱うべきでは?

投稿2016/11/21 00:19

akio221

総合スコア716

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

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

koooma

2016/11/21 01:45

確かに、そのとおりですね。真似するなら、作法を全て真似すべきですね。ありがとうございます。
akio221

2016/11/21 01:49

ソースが無いので推測ですが、元ソースがvarで読み出し先を指定して itemsを取ってきてるのであれば、java側でreturnしたキー名で、 セッションに値を入れてくれているナニカのソースがいるはずです。
akio221

2016/11/21 02:04

・・・と。eachのitemsは「personalWorkStatusList」ですね。 素でvarとitemsが引っくり返ってました。すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問