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

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

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

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

Thymeleaf

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

Spring Boot

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

Q&A

解決済

4回答

21928閲覧

spring boot でのthymeleafでの値の受渡しが上手く行きません

Nakataku

総合スコア15

Java

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

Thymeleaf

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

Spring Boot

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

1グッド

1クリップ

投稿2018/11/07 11:27

編集2018/11/08 03:23

前提・実現したいこと

spring boot でthymeleafを使って値の受渡しをしたいのですが、一つ目のhtmlの<input type="text" th:field="*{userId}" />の部分を追加すると、エラーが出て画面遷移が上手く行きません。
どなたかよろしければご教示下さい

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

org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/signUp.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "signUp" - line 9, col 28) 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] ... 52 common frames omitted
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "signUp" - line 9, col 28) at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'userInfoForm' available as request attribute

該当のソースコード

<!DOCTYPE html> <html lang="ja" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Sign in</title> </head> <body> <h1>login</h1> <a href="/signUp">sign up</a> </body> </html>
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Sign up</title> </head> <body> <div th:text="${name}"></div> <form method="post" th:action="@{/signInConfirm}" th:object="${userInfoForm}" > <input type="text" th:field="*{userId}" /> <input type="submit" value="Submit" /> </form> </body> </html>
@Controller public class SignUpController { @RequestMapping(value = "/signUp",method = RequestMethod.GET) public String moveSignUp(Model model){ model.addAttribute("name","hogehoge"); return "signUp"; } @RequestMapping(value = "signUpConfirm", method = RequestMethod.POST) public String signUpConfirm(@ModelAttribute UserInfoForm userInfoForm, Model model){ return "signUpConfirm"; } }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Sign up Confirm</title> </head> <body> <h1>Sign Up Confirm</h1> </body> </html>
package dev.create.form; import javax.annotation.Resource; @Resource public class UserInfoForm { private String userId = ""; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } }
nun👍を押しています

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

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

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

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

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

guest

回答4

0

ベストアンサー

おそらくスタックトレースが途中で切られているかと思うんですが、Thymeleafのテンプレート解析中には発生するエラーについては、たいてい

Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "userid" (template: "signup" - line 16, col 9)

のような行数と位置が表記されます。

ところで、提示していただいたコードの中には、Controllerに登場していないのに利用している変数があるようです。

<form method="post" th:action="@{/signInConfirm}" th:object="${userInfoForm}" > <input type="text" th:field="*{userId}" />

これの ${userInfoForm}と、th:fleld="*{userId} で示した値は、Controllerから何も渡していないのでそもそも表示できずnullオブジェクトとなり表示できません。

userInfoFormはどこから取得しているものなのでしょうか?

投稿2018/11/07 18:21

A-pZ

総合スコア12011

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

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

Nakataku

2018/11/08 03:37

回答ありがとうございます。 一応やりたいこととしましては、signUp.htmlからsignUpConfirm.htmlにテキストボックスに入力した値を受け渡したいと考えてます。 それで、signUp.htmlに ${userInfoForm}と、th:fleld="*{userId} を明示して、値をuserInfoFormに値を渡したいです。 なのでuserInfoFormはsignUpConfirm.htmlで取得しようと考えてます。 そもそも次の画面にテキストボックスで入力した値を受け渡す、やり方が間違ってるのでしょうか? 説明がへたすぎて本当にすいません。
A-pZ

2018/11/08 05:49

なるほどなるほど、詳細にありがとうございます。ちょっと調べますね d(ω・
A-pZ

2018/11/08 06:03

/signup で表示される signup.html が、userInfoFormのインスタンスを必要としていますので、Controllerの引数に UserInfoFormを加えるだけで表示されます。具体的には、public String moveSignUp(Model model, UserInfoForm form) とするだけでよいです。ちなみに@Resourceは不要です。
Nakataku

2018/11/08 06:50

UserInfoForm加えることで上手く行くようになりました!! 少し途方に暮れてたので、本当に助かりました。 ありがとうございました!!!!
A-pZ

2018/11/08 09:16

d(・ω・.
guest

0

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. 구글 상위노출

投稿2023/09/25 14:33

smaran

総合スコア24

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

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

0

投稿2023/05/06 02:57

rmw81754

総合スコア42

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

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

0

投稿2023/03/02 04:18

rmw81754

総合スコア42

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問