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

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

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

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2899閲覧

Thymeleafのフォームを正常に表示できない

rein

総合スコア9

Java

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

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/03/03 02:46

編集2020/03/10 02:38

前提・実現したいこと

Thymeleafを使用したフォームの作成中にエラーが発生しております。
画面内の表示内容をタブで切り替えられるような画面を作成しており、そのうち3番目のタブでThymleafを使用したフォームを表示したいのですがエラーになり表示できません。
1・2番目のタブでThymleafを使用してtableにデータを表示しているのですが、こちらは正常に動作します。

発生している問題・エラーメッセージ

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/edit_event.html]")

該当のソースコード

Controller(関係ありそうな部分のみ抜粋)

Java

1@RequestMapping("edit_event") 2 public String editEvent(Model model) { 3 4 // 一つ目と二つ目のタブで使用するデータ 5 List<Player> playerList = playerService.findAllPlayer(); 6 model.addAttribute("playerList", playerList); 7 8 // 三つ目のタブで使用するデータ 9 Event event = eventService.findEvent(); 10 model.addAttribute("event", event); 11 12 return "edit_event"; 13 } 14 15@PostMapping("editEventInfo") 16 public String editEventInfoPost(@ModelAttribute Event event) { 17 eventService.updateEvent(event); 18 return "redirect:edit_event"; 19 }

edit_event.html(関係ありそうな部分のみ抜粋)

html

1<!DOCTYPE html> 2<html lang="jp" xmlns:th="http://www.thymeleaf.org"> 3 4<body> 5 <div class="tab-wrapper"> 6 //一つ目のタブ 7 <div class="tab_content"> 8 <table> 9 <thead> 10 <tr> 11 <th>氏名</th> 12 <th>メールアドレス</th> 13 </tr> 14 </thead> 15 <tbody> 16 <tr th:each="player : ${PlayerList}"> 17 <td th:text="${player.last_name} + ' ' + ${player.first_name}"></td> 18 <td th:text="${player.email}"></td> 19 </tr> 20 </tbody> 21 </table> 22 </div> 23 24 //二つ目のタブ 25 <div class="tab_content"> 26 <table> 27 <thead> 28 <tr> 29 <th>氏名</th> 30 <th>順位</th> 31 </tr> 32 </thead> 33 <tbody> 34 <tr th:each="player : ${PlayerList}"> 35 <td th:text="${player.last_name} + ' ' + ${player.first_name}"></td> 36 <td th:text="${player.ranking}"></td> 37 </tr> 38 </tbody> 39 </table> 40 </div> 41 42 //三つ目のタブ 43 <div class="tab_content"> 44 <form action="#" th:action="@{/editEventInfo}" th:object="${event}" method="post"> 45 <label> 46 <span>大会名 <span class="required">*</span></span> 47 <input type="text" class="input-field" th:field="*{event_name}" /> 48 </label> 49 <label> 50 <span>コース <span class="required">*</span></span> 51 <input type="text" class="input-field" th:field="*{course}" /> 52 </label> 53 <label> 54 <span> </span><input type="submit" value="更新" /> 55 </label> 56 </form> 57 </div> 58 </div> 59</body>

試したこと

①1・2番目のタブの<div class="tab_content">内をすべてコメントアウト ⇒ エラー
②1・2番目のタブの<div class="tab_content">内をすべて削除      ⇒ 正常に表示できる
③②を試した後に削除した部分を再度記述し上書き、ブラウザを更新     ⇒ 正常に表示できる
④一度別画面(Thymleafを使ったフォームを表示する画面)を表示してからブラウザの戻るボタンでedit_event.htmlに戻る。 ⇒ 3つのタブ全て正常に表示できる
⑤フォームの「th:action="@{/editEventInfo}"」を削除         ⇒ 正常に表示できる

springbootのバージョンは2.2.2です。
VSCodeとChromeを使用して開発しております。
色々と検索しましたが原因がわからず手詰まりの状態です。
わかる方いらっしゃいましたら、よろしくお願いいたします。

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

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

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

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

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

rubytomato

2020/03/05 11:48

質問にご提示のコードでエラーが再現するか確認しましたが、とくにエラーは起きずedit_event.htmlページが表示できました。 考えられるのはご提示のコード以外の部分に原因があるか、または開発環境によるものかと思います。 差支えなければ、エラーメッセージの全文、コントローラー、サービス、エンティティクラスのコード、テンプレートファイルおよびJava、Spring Bootのバージョンを質問に追記ください。 開発環境については、Spring BootアプリケーションをVSCodeで開発したことは無いのでコメントできませんが、VSCodeにこだわりがなければEclipseやIntelliJなどを使われてみてはどうでしょうか?
rein

2020/03/10 02:44

遅くなってしまいすみません、わざわざ再現確認いただきありがとうございます。色々と検証したところエラーの起きているページに遷移するときにsession IDを作成できていない?ようです。同一アプリ内の他のページに遷移するとデバッグコンソールに「Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [217] milliseconds.」と表示され、エラーの起きているページを正常に表示することができます。
rein

2020/03/10 04:08

削除依頼を出しましたが却下されました
rubytomato

2020/03/10 15:25

> Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [217] milliseconds. これは警告メッセージだと思います。意訳すれば『SecureRandomインスタンスの生成は217ミリ秒かかった』ということです。 なのでご質問の現象とは関係がないように思います。 先のコメントに書きましたが質問内容の情報だけでは原因の推測はできませんので、もう少し情報を追記してください。
rein

2020/03/11 01:33

すみません、自己解決しました。 > Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [217] milliseconds. 上記メッセージが表示されると、エラーで表示できなかったはずのページが表示できるようになる →session関連に問題があるのでは?と判断しそのあたりを調べた結果、Controllerの引数に「HttpSession session」を追加することでエラーが出なくなりました。 情報不足の質問となってしまいすみません。字数制限のためあまり追記できませんでした。
guest

回答1

0

自己解決

自己解決しました。Controllerの引数に「HttpSession session」を追加することで正常に表示できるようになりました。

【修正前】

Java

1@RequestMapping("edit_event") 2 public String editEvent(Model model) {

【修正後】

Java

1@RequestMapping("edit_event") 2 public String editEvent(Model model, HttpSession session) {

投稿2020/03/11 01:35

rein

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問