thymeleaf 表单报错 Neither BindingResult nor plain target object for bean name 'XXX' available

今天使用 thymeleaf 模板做项目遇到了页面内容显示不出来,报错 Neither BindingResult nor plain target object for bean name 'orderListQuery' available as request attribute 然后,找了很多方法,最后发现是。。。。。没定义

报错信息

 

 

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'orderListQuery' available as request attribute
	at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.RELEASE]
	at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) ~[spring-webmvc-5.1.2.RELEASE.jar:5.1.2.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]
	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.TemplateHandlerAdapterMarkupHandler.handleStandaloneElementEnd(TemplateHandlerAdapterMarkupHandler.java:260) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
	at org.thymeleaf.

页面

是因为在页面跳转的时候,没有定义orderListQuery,在html页面中直接定义,报错  groupName没有定义,然后将页面跳转的地方,添加了  标红位置,之前没有添加。

 

<think>好的,用户遇到了一个Spring MVC中的异常:java.lang.IllegalStateException,提示BindingResult或目标对象'enCreditSubmittedAudit'不可用作为请求属性。这个问题通常与表单处理相关,我需要先了解用户的具体场景和代码结构。 首先,可能的原因有几个。最常见的是在Controller的方法中,没有正确地将模型对象添加到Model中。例如,当使用@ModelAttribute注解时,如果对应的对象没有在方法参数中声明,或者在处理方法中没有添加到Model里,就会导致这个错误。 另外,用户可能在表单提交的GET请求中没有初始化目标对象,而直接跳转到表单页面。这时候,如果没有预先将空对象添加到模型中,表单绑定会失败。例如,在Spring MVC中,通常需要在显示表单的GET请求处理方法中,将一个新的对象添加到Model中,这样在渲染表单时,Thymeleaf或JSP能够正确绑定。 还有可能用户没有正确使用@ModelAttribute注解。比如,在方法的参数中,如果目标对象的名称与表单中的commandName不一致,或者没有指定名称,Spring可能无法找到对应的对象,从而抛出异常。 此外,BindingResult的位置也很重要。BindingResult必须紧跟在目标对象参数之后,否则Spring无法正确关联它们,导致错误。例如,如果方法参数顺序是BindingResult在前,目标对象在后,就会出现问题。 我需要检查用户是否在表单处理的方法中正确添加了目标对象到Model,并确保在GET请求中初始化了对象。同时,验证@ModelAttribute的使用是否正确,参数顺序是否正确。如果用户使用的是Thymeleaf,还需要检查表单的th:object是否正确引用了模型中的对象名称。 可能还需要用户检查是否有拼写错误,比如模型属性名称与表单中引用的名称不一致。例如,如果Controller中将对象命名为"enCreditSubmittedAudit",而表单中使用的是其他名称,就会导致绑定失败。 最后,建议用户添加日志或调试断点,查看在进入表单页面时,模型中是否确实存在目标对象,以及在提交表单时,目标对象和BindingResult是否正确传递到处理方法中。</think>在Spring MVC中出现$java.lang.IllegalStateException: BindingResult or target object 'enCreditSubmittedAudit' missing$错误,通常由以下原因导致: ### 一、根本原因 1. **模型对象未初始化**:表单渲染前未将目标对象添加到Model 2. **请求方法不匹配**:表单提交方式与@RequestMapping声明不一致 3. **参数顺序错误**:BindingResult未紧跟在目标对象参数后 4. **注解缺失**:缺少@ModelAttribute或@Valid注解 ### 二、解决方案 #### 步骤1:确保GET请求初始化对象 ```java @GetMapping("/form") public String showForm(Model model) { model.addAttribute("enCreditSubmittedAudit", new EnCreditSubmittedAudit()); // 初始化目标对象 return "form-page"; } ``` #### 步骤2:POST方法正确声明参数 ```java @PostMapping("/submit") public String handleSubmit( @Valid @ModelAttribute("enCreditSubmittedAudit") EnCreditSubmittedAudit form, BindingResult result, // 必须紧跟目标对象 Model model) { if (result.hasErrors()) { return "form-page"; } // 处理逻辑 return "success-page"; } ``` #### 步骤3:检查表单页面绑定 Thymeleaf示例: ```html <form th:action="@{/submit}" th:object="${enCreditSubmittedAudit}" method="post"> <input type="text" th:field="*{fieldName}"> <!-- 其他表单项 --> </form> ``` ### 三、常见错误排查 1. **模型属性名称不一致**:确保@ModelAttribute名称与th:object中的名称完全匹配 2. **缺少@Valid注解**:验证注解需要配合@Valid使用 3. **GET/POST方法混淆**:表单提交应使用POST方法 4. **参数顺序错误**:BindingResult必须紧随被验证对象 ### 四、进阶优化建议 ```java // 使用@ControllerAdvice统一初始化模型 @ControllerAdvice public class ModelInitializer { @ModelAttribute("enCreditSubmittedAudit") public EnCreditSubmittedAudit initForm() { return new EnCreditSubmittedAudit(); } } ``` 该异常表明Spring在渲染视图时未找到名为'enCreditSubmittedAudit'的模型属性。通过正确初始化模型对象、保持参数顺序一致、确保表单绑定正确,即可解决问题。若使用Spring Boot,可检查自动配置是否被错误排除[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值