Ни BindingResult, ни простой целевой объект для имени компонента «bookDto» не доступны в качестве атрибута запроса - PullRequest
0 голосов
/ 14 июня 2019

Я работаю с весенней загрузкой и тимилифом и получаю «Ни BindingResult, ни простой целевой объект для имени компонента bookDto, доступные как атрибут запроса», когда я возвращаю страницу индекса после успешного входа в систему

Странно то, что страница индекса работает нормально, когда я ищу ее как 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">

1 Ответ

0 голосов
/ 14 июня 2019

BookDto отправляется как тело запроса, поэтому вы должны получить его вот так

public ModelAndView searchBooks(BookDto bookDto, Model model) {

Просто удалите @ ModelAttribute

Но вы должны убедиться, что bookDto get инициализирован!Поэтому, когда вы переходите на страницу индекса, вы должны создать новый BookDto:

modelAndView.setViewName("index");
model.addAttribute("bookDto", new BookDto());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...