🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

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

Java

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

Q&A

解決済

1回答

1452閲覧

tableタグのヘッダー部分でエラーが発生する

K_3578

総合スコア1282

JSP

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

Java

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

0グッド

0クリップ

投稿2021/01/19 06:32

編集2021/01/19 09:18

前提・実現したいこと

現在tableタグを使って
formからDBに入力した情報をサーブレットを通してtable内に表示したいのですが、
ヘッダーを固定してbodyの部分を<forEachで繰り返し処理したいのですが、
ヘッダー部分でエラーが発生してしまい、原因がわかりません。
どうか知恵をお貸し頂きたいです。

##ソースコード
イメージ説明

JSP

1 <table class="Truck_table"> 2 <thead> 3 <tr> 4 <th class="space1" rowspan="2" colspan="3"></th> 5 <th class="Day1" colspan="4"><fmt:formatDate value='${trucks.task_date}' pattern='yyyy年MM月dd日(E)' /></th> 6 <th class="Day2" colspan="4"></th> 7 <th class="Day3" colspan="4"></th> 8 </tr> 9 <tr> 10 <th></th> 11 <th></th> 12 <th></th> 13 <th></th> 14 <th></th> 15 <th></th> 16 <th></th> 17 <th></th> 18 <th></th> 19 <th></th> 20 <th></th> 21 <th></th> 22 </tr> 23 </thead><%-- ここまでは繰り返さない --%> 24 <c:forEach var="trucks" items="${trucks}" varStatus="status"><%-- ここから繰り返し処理 --%> 25 <tbody> 26 <tr> 27 <td class="mw_time"></td> 28 <td class="sa_time"></td> 29 <td class="wa_time"></td> 30 <td class="es_time"></td> 31 <td class=""></td> 32 <td class=""></td> 33 <td class=""></td> 34 <td class=""></td> 35 <td class=""></td> 36 <td class=""></td> 37 <td class=""></td> 38 <td class=""></td> 39 </tr> 40 <tr> 41 <td class="拠点名"><c:out value="${trucks.office_name}"></c:out></td> 42 <td class="車番"><c:out value="${trucks.truck_code}"></c:out></td> 43 <td class="車種"><c:out value="${trucks.truck_type}"></c:out></td> 44 <td class ="宵積卸地"></td> 45 <td class ="積地"><c:out value="${trucks.stack_area}"></c:out></td> 46 <td class ="卸地"><c:out value="${trucks.wholesale_area}"></c:out></td> 47 <td class ="宵積"></td> 48 <td class ="宵積卸地2"></td> 49 <td class ="積地2"></td> 50 <td class ="卸地2"></td> 51 <td class ="宵積2"></td> 52 <td class ="宵積卸地3"></td> 53 <td class ="積地3"></td> 54 <td class ="卸地3"></td> 55 <td class ="宵積3"></td> 56 <tr> 57 <td class="mw_time"></td> 58 <td class="sa_time"></td> 59 <td class="wa_time"></td> 60 <td class="es_time"></td> 61 <td class=""></td> 62 <td class=""></td> 63 <td class=""></td> 64 <td class=""></td> 65 <td class=""></td> 66 <td class=""></td> 67 <td class=""></td> 68 <td class=""></td> 69 </tr> 70 <tr> 71 <td></td> 72 <td class ="積地"></td> 73 <td class ="卸地"></td> 74 <td></td> 75 <td></td> 76 <td class ="積地2"></td> 77 <td class ="卸地2"></td> 78 <td></td> 79 <td></td> 80 <td class ="積地3"></td> 81 <td class ="卸地3"></td> 82 <td></td> 83 </tr> 84 </tbody> 85 </c:forEach><%-- ここまで繰り返し処理 --%> 86 </table>
package controllers.dispatch; import java.io.IOException; import java.util.List; import javax.persistence.EntityManager; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import models.Trucks; import utils.DBUtil; @WebServlet("/dispatch/index") public class DispatchIndexServlet extends HttpServlet { private static final long serialVersionUID = 1L; public DispatchIndexServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { EntityManager em = DBUtil.createEntityManager(); List<Trucks> trucks = em.createNamedQuery("getAllTrucks",Trucks.class) .getResultList(); long trucks_count = (long)em.createNamedQuery("getTrucksCount", Long.class) .getSingleResult(); em.close(); request.setAttribute("trucks", trucks); request.setAttribute("trucks_count", trucks_count); if(request.getSession().getAttribute("flush") != null) { request.setAttribute("flush", request.getSession().getAttribute("flush")); request.getSession().removeAttribute("flush"); } RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/dispatch/index.jsp"); rd.forward(request, response); } }
Hibernate: create table trucks ( id integer not null auto_increment, office_name varchar(255), sa_time varchar(255), stack_area varchar(255), task_date date, task_time time, task_type varchar(255), truck_code varchar(255), truck_type varchar(255), wa_time varchar(255), wholesale_area varchar(255), primary key (id) ) engine=MyISAM -------------------------------- Hibernate: select trucks0_.id as id1_1_, trucks0_.office_name as office_n2_1_, trucks0_.sa_time as sa_time3_1_, trucks0_.stack_area as stack_ar4_1_, trucks0_.task_date as task_dat5_1_, trucks0_.task_time as task_tim6_1_, trucks0_.task_type as task_typ7_1_, trucks0_.truck_code as truck_co8_1_, trucks0_.truck_type as truck_ty9_1_, trucks0_.wa_time as wa_time10_1_, trucks0_.wholesale_area as wholesa11_1_ from trucks trucks0_ Hibernate: select count(trucks0_.id) as col_0_0_ from trucks trucks0_ Hibernate: insert into trucks (office_name, sa_time, stack_area, task_date, task_time, task_type, truck_code, truck_type, wa_time, wholesale_area) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) Hibernate: select trucks0_.id as id1_1_, trucks0_.office_name as office_n2_1_, trucks0_.sa_time as sa_time3_1_, trucks0_.stack_area as stack_ar4_1_, trucks0_.task_date as task_dat5_1_, trucks0_.task_time as task_tim6_1_, trucks0_.task_type as task_typ7_1_, trucks0_.truck_code as truck_co8_1_, trucks0_.truck_type as truck_ty9_1_, trucks0_.wa_time as wa_time10_1_, trucks0_.wholesale_area as wholesa11_1_ from trucks trucks0_ Hibernate: select count(trucks0_.id) as col_0_0_ from trucks trucks0_

##エラーメッセージ
イメージ説明
##実際の画面
イメージ説明

補足情報(FW/ツールのバージョンなど)

Eclipse4.6Neon使用

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

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

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

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

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

moromon

2021/01/19 06:35

trucks.task_date この変数にはどのような値が入っていますか?
m.ts10806

2021/01/19 06:41

原因はエラーに書いてありますねえ…
K_3578

2021/01/19 06:56

trucks.task_dateには<fmt.formatで入力した日付をDate型で入れてます。 パターンはyyyy年MM月dd日という形です。
moromon

2021/01/19 07:10

エラーは日付のフォーマットで失敗しているように見えるのでおそらくtask_dateが意図しない形になっているとかだと思うんですけど、task_dateをformatタグじゃなくてそのまま画面に出力できますか?
moromon

2021/01/19 07:12

コードをよく見たらforeachでtrucks変数を指定しているんですけど、 trucksはリストか配列かなんかですよね? リストをそのままtrucks.task_dateとかってできるんでしょうか?
K_3578

2021/01/19 07:21

そのまま画面に出力とは、どういうことを言うのでしょうか。 無知で申し訳ありません。
m.ts10806

2021/01/19 07:22

テーブルタグなどレイアウトされたものではなく、単に中身だけ列挙して出力。
K_3578

2021/01/19 07:35

<th>task_dateの日付</th> ということですか?
moromon

2021/01/19 07:45

${trucks.task_date} これをタグの中じゃなくて、そのまま書き出してみてください。 <th>${trucks.task_date}</th> 質問者のコメントですとこんな感じです。
K_3578

2021/01/19 07:49

ありがとうございます。 書き換えてみたところ、同様のエラーメッセージが出ました。
moromon

2021/01/19 07:54

同じNumberFormatExceptionですか?
m.ts10806

2021/01/19 07:56

そういや、なぜループ外で直接リストを参照してるんでしょうか。 コントローラ及びデータ取得部がないのでなんとも言えませんが、trucksはリストなら、ループ外で参照したい場合、配列のリスト番号も必要なのでは
moromon

2021/01/19 08:00

それ私も思いました。リストの値の取り出し方が間違っているなら原因はそこかもですね。
K_3578

2021/01/19 08:06

Indexのコントローラのコードを追記してみました、よろしければご指摘頂けると 有り難いです。
moromon

2021/01/19 08:11

${ trucks.get(0).task_date} か ${trucks[0].task_date} これをJSP側に書いてもエラーになりますか?
K_3578

2021/01/19 08:21

${ trucks.get(0).task_date}を入れてみた所、エラーは出なくなったのですが、肝心のtableに 日付が表示されないです。
moromon

2021/01/19 08:26

Java側でtrucksの中身が取得できているかの確認はしていますか?
m.ts10806

2021/01/19 08:29

コントローラ及びデータ取得部がないのでなんとも言えません。 あとテーブル定義と実際のデータも
K_3578

2021/01/19 08:39

とりあえずデータベースのテーブル定義と実際の画面のスクリーンショットを追加します
moromon

2021/01/19 09:03

追記ありがとうございます。データの中身と、SQLをたたいているはずなので、その部分のコード できたらJava側でtrucksの中身のリストをコンソールで出力して、その結果もあると助かります。
K_3578

2021/01/19 09:21 編集

Eclipseを使用しているのですが、そちらのSQL文を記述している部分のことでしょうか? -------------------------------- 自分には分からなかったので、アプリケーションへのログイン>tableの画面>新規登録>登録完了 までの流れを行った後のコンソールから、関係のありそうな部分を追記しておきます。
moromon

2021/01/19 09:34

List<Trucks> trucks = em.createNamedQuery("getAllTrucks",Trucks.class) .getResultList(); こちらのコードで指定している getAllTrucks の、SQL文は書かれた記憶はありますか?
m.ts10806

2021/01/19 09:37

結局、thのところには何を置きたいんでしたっけ。
K_3578

2021/01/20 00:14 編集

moromon様 >getAllTrucks の、SQL文は書かれた記憶はありますか? src下、modelsというパッケージ内にTrucks.javaにてSQL文は書いております。 -------------------------------- m.ts10806様 >結局、thのところには何を置きたいんでしたっけ。 thの所には1段目にtask_date(日付)、2段目に表の基準としてテキストを入力したいと思ってます。
m.ts10806

2021/01/20 00:16

1段目? それをHTMLだけで書けますか?「モック」と言います。 むしろモックを先に作っておかないと動的に作るときに今回のような問題が起きて困ります。
m.ts10806

2021/01/20 00:20

それ次第で、レイアウトも含めて検討しなおさなければならないかもしれません。 ループ始める位置間違ってるとか、そういう段階ですね。
K_3578

2021/01/20 00:46

モックというものをそもそも理解出来ていないのですが、完成予想図のようなもののことでしょうか?
m.ts10806

2021/01/20 00:52

そんなところです。 完成イメージ。大抵は「基本設計」の段階で作られます。
K_3578

2021/01/20 01:32 編集

一応アナログですが完成予想図自体は用意していて、それを基にして作ってはいっているのですが・・・ -------------------------------- とりあえずエラー自体は解消致しましたので本件クローズとして改めて質問を投稿したいと思います。 ご協力感謝致します。
guest

回答1

0

自己解決

フォーマットではなく、直接

<th>${ trucks.get(0).task_date}<th>

とすることでエラーは解消。

投稿2021/01/20 01:34

K_3578

総合スコア1282

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問