【发布时间】:2019-10-29 00:03:50
【问题描述】:
我正在使用 spring boot 和 thymeleaf,当我在成功登录后返回索引页面时,我不断收到“Bean name bookDto 的 BindingResult 和普通目标对象都不能用作请求属性”
奇怪的是,当我将其搜索为 localhost:8080/index 时,索引页面工作正常。
我也尝试过从登录方法返回另一个页面,它只有索引页面给了我错误。
以下是我的控制器方法和 index.html 表单
@RequestMapping(value = "/login")
@PostMapping
public ModelAndView login(@ModelAttribute("loginForm") LoginForm loginForm, ModelAndView modelAndView, BindingResult bindignResult) {
AppUser userLoggedIn = userService.findByUserNameAndEncryptedPassword(loginForm.getUsername(), loginForm.getPassword());
if (userLoggedIn == null){
modelAndView.addObject("errorLogin", "Incorrect Credentials!");
modelAndView.setViewName("signin");
}else {
modelAndView.setViewName("index");
}
return modelAndView;
}
按属性过滤书籍
@RequestMapping(value = "/search")
@PostMapping
public ModelAndView searchBooks(@ModelAttribute ("bookDto") BookDto bookDto, Model model) {
model.addAttribute("books", bookService.listAll(searchFilterBuilder.buildFilter(bookDto)));
model.addAttribute("bookDto", bookDto);
return new ModelAndView("index");
}
最后是我的 index.html
<form th:object="${bookDto}" th:action="@{/search}" method="post">
【问题讨论】:
-
你在哪里为 BookDto 声明了 bean?
-
我不确定你的意思,但 BookDto 不是 bean,它只是 pojo
标签: java spring-boot thymeleaf