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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Thymeleaf

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

HTML

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

Q&A

1回答

8302閲覧

org.thymeleaf.exceptions.TemplateInputException:の対処方法

Rivermouth

総合スコア18

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Thymeleaf

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

HTML

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

1グッド

0クリップ

投稿2020/07/29 08:29

編集2020/07/30 04:25

「Spring解体新書」というテキストを参考にSpringの勉強をしているのですが、このエラーが出てしまい手も足も出ない状態です。

エラー

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/login/homeLayout.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] (文字数制限のため一部省略) Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.standard.processor.StandardIncludeTagProcessor' (template: "login/homeLayout" - line 48, col 22) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.attoparser.MarkupParser.parse(MarkupParser.java:257) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] ... 48 common frames omitted

homeLayoutの48行目でエラーが起こっているのは分かるのですが、ここからどのように対処すれば良いのか分かりません。

HomeController.java

import java.util.List; import java.util.Map; import java.util.LinkedHashMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import com.example.demo.login.domain.model.SignupForm; import com.example.demo.login.domain.model.User; import com.example.demo.login.domain.service.UserService; @Controller public class HomeController { @Autowired UserService userService; //結婚ステータスのラジオボタン用変数 private Map<String, String> radioMarriage; //ラジオボタンの初期化メソッド(ユーザー登録画面と同じ) private Map<String, String> initRadioMarriage(){ Map<String, String> radio = new LinkedHashMap<>(); //既婚、未婚をMapに格納 radio.put("既婚", "true"); radio.put("未婚", "false"); return radio; } @GetMapping("/home") public String getHome(Model model) { model.addAttribute("contents", "login/home :: home_contents"); return "login/homeLayout"; } //ユーザー一覧画面のGET用メソッド @GetMapping("/userList") public String getUserList(Model model) { model.addAttribute("contents", "login/userList :: userList_contents"); List<User> userList = userService.selectMany(); model.addAttribute("userList", userList); int count = userService.count(); model.addAttribute("userListCount", count); return "login/homeLayout"; } @GetMapping("/userDetail/{id:.+}") public String getUserDetail(@ModelAttribute SignupForm form, Model model, @PathVariable("id") String userId) { System.out.println("userId = " + userId); model.addAttribute("contents", "login/userDetail :: userDetail contents"); radioMarriage = initRadioMarriage(); model.addAttribute("radioMarriage", radioMarriage); if(userId != null && userId.length() > 0) { User user = userService.selectOne(userId); form.setUserId(user.getUserId()); form.setUserName(user.getUserName()); form.setBirthday(user.getBirthday()); form.setAge(user.getAge()); form.setMarriage(user.isMarriage()); model.addAttribute("signupForm", form); } return "login/homeLayout"; } @PostMapping("/logout") public String postLogout() { return "redirect:/login"; } @GetMapping("/userList/csv") public String getUserListCsv(Model model) { return getUserList(model); } }

homeLayout.html

HTML

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org" 3 xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 4 5<head> 6 <meta charset="UTF-8"></meta> 7 8 <!-- Bootstrapの設定 --> 9 <link th:href="@{/webjars/bootstrap/3.3.7-1/css/bootstrap.min.css}" rel="stylesheet"></link> 10 <script th:src="@{/webjars/jquery/1.11.1/jquery.min.js}"></script> 11 <script th:src="@{/webjars/bootstrap/3.3.7-1/js/bootstrap.min.js}"></script> 12 13 <!-- CSSの読込 --> 14 <link th:href="@{/css/home.css}" rel="stylesheet"></link> 15 16 <title>Home</title> 17</head> 18<body> 19 <!-- ===== ヘッダー(ナビゲーションバー) ===== --> 20 <nav class="navbar navbar-inverse navbar-fixed-top"> 21 <div class="container-fluid"> 22 <div class="navbar-header"> 23 <a class="navbar-brand" href="#">SpringSample</a> 24 </div> 25 <form method="post" th:action="@{/logout}"> 26 <button class="btn btn-link pull-right navbar-brand" type="submit"> 27 ログアウト 28 </button> 29 </form> 30 </div> 31 </nav> 32 <!-- ===== サイドバー ===== --> 33 <div class="container-fluid"> 34 <div class="row"> 35 <div class="col-sm-2 sidebar"> 36 <ul class="nav nav-pills nav-stacked"> 37 <li role="presentation"> 38 <a th:href="@{'/userList'}">ユーザ管理</a> 39 </li> 40 </ul> 41 </div> 42 </div> 43 </div> 44 <!-- ===== コンテンツ ===== --> 45 <div class="container-fluid"> 46 <div class="row"> 47 <div class="col-sm-10 col-sm-offset-2 main"> 48 <div th:include="__${contents}__"></div> 49 </div> 50 </div> 51 </div> 52</body> 53</html>

文字数制限の関係で全てのクラスやHTMLファイルを載せることはできないのですが、不明点などがあればコメントをお願いいたします。

よろしくお願い致します。

Ryuu6490👍を押しています

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

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

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

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

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

A-pZ

2020/07/29 15:47

template: "login/homeLayout" - line 48, col 22 と出ていますので、homeLayout.htmlの48行目近辺のコードに誤りがあります。
Rivermouth

2020/07/30 01:49

それはわかるのですが、具体的にどのように修正すればいいのかが分からないのです。ちなみに正解のソースコードをコピペしてみましたが、同じエラーが出てしまいました。
thkim0111

2020/07/30 02:34

homeLayout.htmlの中身はせめて提示するべきじゃないですか? homeLayout.htmlに何かしらのミスがある可能性が高いのにhomeLayout.htmlを確認できないとなると回答のしようがない気がします。
A-pZ

2020/07/30 04:11

HTMLのコードに誤りがあるはずですが、HTMLが書かれていないので判別できません。
Rivermouth

2020/07/30 04:26

確かにその通りです。申し訳ございません。 載せましたので、よろしくお願いします。
guest

回答1

0

インクルードしている ${contents} にて、contentsの変数に正しく設定できていない場合にエラーが発生します。

model.addAttribute("contents", "login/userDetail :: userDetail contents");

と、userDetail と contents の間に半角スペースが入っているように思えますが、これは正しいでしょうか。

投稿2020/07/30 05:46

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問