実現したいこと
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は表示されるので、この周辺のエラーだと思います。
補足
文字オーバーの為、エラーメッセージ一部抜粋しています。
回答1件
あなたの回答
tips
プレビュー