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

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

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

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

Thymeleaf

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

HTML

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

Spring Boot

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

Q&A

解決済

1回答

209閲覧

JavaのSpringBoot(status=500について)

java_pp

総合スコア1

Java

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

Thymeleaf

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

HTML

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

Spring Boot

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

1グッド

1クリップ

投稿2024/05/06 10:46

実現したいこと

login.htmlが正しく表示されるようにしたい

発生している問題・分からないこと

There was an unexpected error (type=Internal Server Error, status=500).

エラーメッセージ

error

1There was an unexpected error (type=Internal Server Error, status=500). 2An error happened during template parsing (template: "class path resource [templates/login.html]") 3org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/login.html]") 4 at Caused by: org.attoparser.ParseException: Error during execution of processor 'org.thymeleaf.spring6.processor.SpringInputGeneralFieldTagProcessor' (template: "login.html" - line 19, col 23) 5 at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) 6 at org.attoparser.MarkupParser.parse(MarkupParser.java:257) 7 at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) 8 ... 48 more 9Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring6.processor.SpringInputGeneralFieldTagProcessor' (template: "login.html" - line 19, col 23) 10 at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117) 11 at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) 12 at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) 13 at org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement(ProcessorTemplateHandler.java:918) 14 at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleStandaloneElementEnd(TemplateHandlerAdapterMarkupHandler.java:260) 15 at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleStandaloneElementEnd(InlinedOutputExpressionMarkupHandler.java:256) 16 at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleStandaloneElementEnd(OutputExpressionInlinePreProcessorHandler.java:169) 17 at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleStandaloneElementEnd(InlinedOutputExpressionMarkupHandler.java:104) 18 at org.attoparser.HtmlVoidElement.handleOpenElementEnd(HtmlVoidElement.java:92) 19 at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297) 20 at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402) 21 at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159) 22 at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710) 23 at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) 24 ... 50 more 25Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'loginForm' available as request attribute 26 at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) 27 at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:926) 28 at org.thymeleaf.spring6.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:232) 29 at org.thymeleaf.spring6.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) 30 at org.thymeleaf.spring6.util.FieldUtils.getBindStatus(FieldUtils.java:253) 31 at org.thymeleaf.spring6.util.FieldUtils.getBindStatus(FieldUtils.java:227) 32 at org.thymeleaf.spring6.processor.AbstractSpringFieldTagProcessor.doProcess(AbstractSpringFieldTagProcessor.java:174) 33 at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) 34 ... 63 more

該当のソースコード

Java

1import lombok.Data; 2 3@Data 4public class LoginForm { 5 6 private String loginId; 7 private String password; 8 9} 10

Java

1import org.springframework.stereotype.Controller; 2import org.springframework.web.bind.annotation.GetMapping; 3 4@Controller 5public class IndexController { 6 7 @GetMapping("/") 8 public String index() { 9 return "login.html"; 10 } 11 12}

Java

1package com.example.demo.app; 2 3import org.springframework.stereotype.Controller; 4import org.springframework.ui.Model; 5import org.springframework.validation.BindingResult; 6import org.springframework.validation.annotation.Validated; 7import org.springframework.web.bind.annotation.GetMapping; 8import org.springframework.web.bind.annotation.ModelAttribute; 9import org.springframework.web.bind.annotation.PathVariable; 10import org.springframework.web.bind.annotation.PostMapping; 11 12import lombok.RequiredArgsConstructor; 13 14@Controller 15@RequiredArgsConstructor 16public class IssueController { 17 18 private final Services services ; 19 20 private final String user = "user"; 21 private final String password = "123"; 22 23 24 @GetMapping("/issues") 25 public String showList(Model model) { 26 model.addAttribute("issueList111", services.findAll111()); 27 return "list.html"; 28 } 29 30 @GetMapping("/form") 31 public String showForm(@ModelAttribute IssueForm form){ 32 return "form.html"; 33 } 34 35 @PostMapping("/input") 36 public String create(@Validated IssueForm form,BindingResult bindingResult,Model model) { 37 if(bindingResult.hasErrors()) { 38 return showForm(form); 39 } 40 services.create111(form.getSummary(), form.getRemarks()); 41 return "redirect:/issues"; 42 } 43 44 @GetMapping("{issueId}") 45 public String showDetail(@PathVariable("issueId") long issueId, Model model) { 46 model.addAttribute("issue", services.findById111(issueId)); 47 return "detail.html"; 48 } 49 50 @PostMapping("/delete") 51 public String deleteIssue(@ModelAttribute("issueId") long issueId) { 52 services.delete111(issueId); 53 return "redirect:/issues"; 54 } 55 56 @PostMapping("/login") 57 public String login(Model model,LoginForm form) { 58 var loginCheck = form.getLoginId().equals(user) && form.getPassword().equals(password); 59 if(loginCheck){ 60 return "redirect:/index"; 61 }else { 62 model.addAttribute("errMsg","ユーザー名かパスワードを間違えています"); 63 return "login"; 64 } 65 } 66} 67

HTML

1<!DOCTYPE html> 2<html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>課題作成</title> 7</head> 8 9<body> 10 <h1>課題作成</h1> 11 12 <span th:text="${errMsg}"></span> 13 14 <form th:action="@{/login}" th:method="post" th:object="${loginForm}"> 15 16 <div> 17 <label>ユーザー名:</label> 18 <input type="text" th:field="*{loginId}"> 19 </div> 20 <div> 21 <label>パスワード:</label> 22 <input type="password" th:field="*{password}"> 23 </div> 24 <div> 25 <button type="submit">ログイン</button> 26 </div> 27 28 </form> 29</body> 30</html> 31

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

HTML

1<input type="text" th:field="*{loginId}">

HTML

1<input type="password" th:field="*{password}">

この二つをコメントアウトすればlogin.htmlは表示されるので、この周辺のエラーだと思います。

補足

文字オーバーの為、エラーメッセージ一部抜粋しています。

loving👍を押しています

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

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

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

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

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

jimbe

2024/05/06 13:40

エラーメッセージには >template: "login.html" - line 19, col 23 と書かれています。 これはドコでしょうか。
java_pp

2024/05/06 13:52

<input type="text" th:field="*{loginId}"> こちらの部分になります。
jimbe

2024/05/06 14:22

>Neither BindingResult nor plain target object for bean name 'loginForm' available as request attribute ともあることから、そこに辿り着くまでに Model に 'loginForm' が入っていません。 ご提示の java コードのどこを通ってこのエラー個所に達しているのでしょうか。
java_pp

2024/05/06 14:29 編集

@GetMapping("/") public String index() { return "login.html"; } このクラスでlogin.htmlを表示したいのですが、html側で値が入っていないということでしょうか? <input type="text" th:field="*{loginId}"> この部分でLoginFormクラスにloginIdにhtmlから入力された値が入ると認識なのですが間違えていますでしょうか?
jimbe

2024/05/06 14:40 編集

>html側で値が入っていないということでしょうか? html はサーバ側で thymeleaf によって変換されてブラウザに送られます。 その変換の際には Model に入っているオブジェクトを用いますが、それが入っていないということでしょう。 実際 index() では何も入れていないようです。 同様の質問が過去に見つかりました。 [th:objectでエラーが出て困っています。] https://teratail.com/questions/26218 >・・・htmlから入力された値が入ると認識 (index() を通る)最初の表示時は form からでは無いですよね?
java_pp

2024/05/06 14:44

package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.example.demo.Form.LoginForm; import lombok.RequiredArgsConstructor; @Controller @RequestMapping("/") @RequiredArgsConstructor public class LoginController { private final String LOGIN_ID = "user"; private final String PASSWORD = "123"; @GetMapping("/") public String view(Model model,LoginForm form) { return "login"; } @PostMapping("/login") public String login(Model model,LoginForm form) { //loginCheckはboolean型の変数でどちらかが間違っていればFALSE var loginCheck = form.getLoginId().equals(LOGIN_ID) && form.getPassword().equals(PASSWORD); if(loginCheck){ return "redirect:/menu"; }else { model.addAttribute("errMsg","ユーザー名かパスワードを間違えています"); return "login"; } } } これを参考に作成して混雑していましたが、jimbeさんのおかげで解決できました。 ありがとうございます!!
java_pp

2024/05/06 14:45

お手数でなければ、ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
jimbe

2024/05/06 14:57

一先ずお疲れさまでした^^
guest

回答1

0

ベストアンサー

Neither BindingResult nor plain target object for bean name 'loginForm' available as request attribute

ともあることから、そこに辿り着くまでに Model に 'loginForm' が入っていません。

html はサーバ側で thymeleaf によって変換されてブラウザに送られます。
その変換の際には Model に入っているオブジェクトを用いますが、それが入っていないということでしょう。
実際 index() では何も入れていないようです。

投稿2024/05/06 14:51

jimbe

総合スコア12754

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問