英文:
Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "index" - line 93, col 69)
问题
以下是您提供的内容的翻译:
我在主页上有一个注册表单,但当我试图加载主页时出现错误。
在处理器 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (模板:"index" - 第93行,第69列) 执行期间发生错误。
以下是我的表单。
<form method="post" th:action="@{/register}" th:object="${registerRequestModel}">
<div class="md-form">
<i class="fas fa-user prefix white-text active"></i>
<input type="text" id="form3" name="name" th:field="*{name}" class="white-text form-control">
<label for="form3" class="active">Your name</label>
</div>
<div class="md-form">
<i class="fas fa-envelope prefix white-text active"></i>
<input type="email" id="form2" name="email" th:field="*{email}" class="white-text form-control">
<label for="form2" class="active">Your email</label>
</div>
<div class="md-form">
<i class="fas fa-lock prefix white-text active"></i>
<input type="password" id="form4" name="password" th:field="*{password}" class="white-text form-control">
<label for="form4">Your password</label>
</div>
<div class="text-center mt-4">
<button type="submit" class="btn btn-indigo">Sign up</button>
</div>
</form>
我的控制器。
@RestController
public class RequestHandler {
private AbstractRepository service;
@Autowired
public RequestHandler(AbstractRepository service) {
this.service=service;
}
@GetMapping("/")
public ModelAndView home(ModelAndView mv) {
mv.addObject("registerRequestModel", new RegisterRequestModel());
mv.setViewName("index");
return mv;
}
@PostMapping("/register")
public String registerUser(RegisterRequestModel registerRequestModel) {
service.registerCollaborators(registerRequestModel);
return "User Registered";
}
}
当我在 localhost:8080 上运行此应用程序时,会出现上述错误。当我移除 th:field="*{name}"
后,它正常工作。
以下是我的模型类。我几乎尝试了所有方法,但它不起作用。
public class RegisterRequestModel {
private String name;
private String email;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "RegisterRequestModel [name=" + name + ", email=" + email + ", password=" + password + "]";
}
}
以下是所请求的完整堆栈跟踪。
org.thymeleaf.exceptions.TemplateProcessingException: 在处理器 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (模板:"index" - 第93行,第69列) 执行期间发生错误。
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
...
Caused by: java.lang.IllegalStateException: 既没有绑定结果,也没有用作请求属性的纯目标对象,用作 bean 名称 'registerRequestModel'
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
...
英文:
I have a register form on homepage and when I am trying to load up the home page I get the error.
Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "index" - line 93, col 69)
Here is my form.
<form method="post" th:action="@{/register}" th:object="${registerRequestModel}">
<div class="md-form">
<i class="fas fa-user prefix white-text active"></i>
<input type="text" id="form3" name="name" th:field="*{name}" class="white-text form-control">
<label for="form3" class="active">Your name</label>
</div>
<div class="md-form">
<i class="fas fa-envelope prefix white-text active"></i>
<input type="email" id="form2" name="email" th:field="*{email}" class="white-text form-control">
<label for="form2" class="active">Your email</label>
</div>
<div class="md-form">
<i class="fas fa-lock prefix white-text active"></i>
<input type="password" id="form4" name="password" th:field="*{password}" class="white-text form-control">
<label for="form4">Your password</label>
</div>
<div class="text-center mt-4">
<button type="submit" class="btn btn-indigo">Sign up</button>
</form>
My Controller.
@RestController
public class RequestHandler {
private AbstractRepository service;
@Autowired
public RequestHandler(AbstractRepository service) {
this.service=service;
}
@GetMapping("/")
public ModelAndView home(ModelAndView mv) {
mv.addObject("registerRequestModel", new RegisterRequestModel());
mv.setViewName("index");
return mv;
}
@PostMapping("/register")
public String registerUser(RegisterRequestModel registerRequestModel) {
service.registerCollaborators(registerRequestModel);
return "User Registered";
}
}
When I run this application on localhost:8080 Then it gives the above error. When I remove th:field="*{name}"
then it works perfectly
Here is my model class. I have almost tried everything but it doesn't work
public class RegisterRequestModel {
private String name;
private String email;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "RegisterRequestModel [name=" + name + ", email=" + email + ", password=" + password + "]";
}
}
Here is the full stack trace as requested.
org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "index" - line 93, col 69)
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]
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement(ProcessorTemplateHandler.java:918) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.StandaloneElementTag.beHandled(StandaloneElementTag.java:228) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.TemplateModel.process(TemplateModel.java:136) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:661) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.view.ThymeleafView.render(ThymeleafView.java:189) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) [spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) [spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) [tomcat-embed-core-9.0.33.jar:9.0.33]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.33.jar:9.0.33]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_181]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.33.jar:9.0.33]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'registerRequestModel' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.thymeleaf.spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:253) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:227) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.spring5.processor.AbstractSpringFieldTagProcessor.doProcess(AbstractSpringFieldTagProcessor.java:174) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
... 52 more
答案1
得分: 1
你忘记了@ModelAttribute
注解。将你的@PostMapping
方法修改为以下形式:
@PostMapping("/register")
public String registerUser(@ModelAttribute RegisterRequestModel registerRequestModel) {
// service.registerCollaborators(registerRequestModel); 这段代码是做什么的?
return view; // 在这里你应该返回一个模板的名称。
}
英文:
You forgot the @ModelAttribute annotation. Make your @PostMapping
method read like this:
@PostMapping("/register")
public String registerUser(@ModelAttribute RegisterRequestModel registerRequestModel) {
// service.registerCollaborators(registerRequestModel); what does this do?
return view; // you should return the name of a template here.
}
答案2
得分: -1
从您的代码中的这一行开始:
<input type="text" id="form3" name="name" th:field="*{name}" class="white-text form-control">
特别是 th:field="*{name}"
部分是导致错误的原因。我曾遇到类似的问题,将其中的 th
删除后问题得到解决。
英文:
From this line of your code:
<input type="text" id="form3" name="name" th:field="*{name}" class="white-text form-control">
specifically the th:field="*{name}"
is what is causing the error. I had a similar problem and i remove the th
from it and it worked.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论