Thymeleaf无法识别对象致500错误:newProd请求属性缺失问题
问题解决:Thymeleaf模板解析500错误(newProd对象缺失)
错误原因
控制台报错Neither BindingResult nor plain target object for bean name 'newProd' available as request attribute,本质是GET请求加载/adminDashboard页面时,没有向请求属性中传入名为newProd的绑定对象,导致Thymeleaf无法解析模板中的th:object="${newProd}"和th:field表达式。
解决方案
修改MainController的@GetMapping("/adminDashboard")方法,向Model中添加一个空的ProductDto实例,供Thymeleaf模板绑定使用。
修改后的Controller代码
public class MainController { @GetMapping("/adminDashboard") public String showAdminDashboard(Model model){ // 传入空的ProductDto实例,让模板能找到绑定对象newProd model.addAttribute("newProd", new ProductDto()); return "AdminDashboard"; } @PostMapping("/adminDashboard") public String loginUserAccount(@ModelAttribute("newProd") ProductDto productDto) { System.out.println(productDto.getName()); return "redirect:/dashboard"; } }
原理说明
Thymeleaf的表单绑定机制要求页面渲染时必须存在对应的目标对象:
- 模板中的
th:object="${newProd}"需要请求属性里有一个名为newProd的对象作为绑定目标 - 即使是用于新增的空表单,也需要提供一个空的对象实例,否则模板解析会直接抛出异常
内容的提问来源于stack exchange,提问作者reiniskr1
相关产品推荐
相关产品推荐

