gpt4 book ai didi

java - BindingResult 和 bean 名称 'bookDto' 的普通目标对象都不能作为请求属性

转载 作者:行者123 更新时间:2023-12-02 04:28:48 24 4
gpt4 key购买 nike

我正在使用 Spring Boot 和 thymeleaf,当我成功登录后返回索引页面时,我不断收到“BindingResult 和 bean 名称 bookDto 的普通目标对象都不能作为请求属性”

奇怪的是,当我搜索 localhost:8080/index 时,索引页面工作正常。

我还尝试从登录方法返回另一个页面,它只是索引页面给我错误。

下面是我的 Controller 方法和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 作为请求正文发送,因此您必须像这样获取它

public ModelAndView searchBooks(BookDto bookDto, Model model) {

只需删除@ModelAttribute

但是你必须确保 bookDto 已初始化!因此,当您导航到索引页面时,您必须创建一个新的 BookDto:

modelAndView.setViewName("index");
model.addAttribute("bookDto", new BookDto());

关于java - BindingResult 和 bean 名称 'bookDto' 的普通目标对象都不能作为请求属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56596671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com