Передача сообщения об ошибке от контроллера к тимилефу - PullRequest
2 голосов
/ 08 января 2020

Я не знаю, как передать ошибку тимелисту вне формы и не указывать c в поле. Просто небольшая проверка, если книга на складе. Если да, обработайте все. Если нет, выдайте сообщение об ошибке на стороне клиента.

Контроллер

@PostMapping("/books/borrow/{id}")
    public String borrowBook(@PathVariable int id, Errors errors) {

        Book borrowedBook = bookRepository.findById(id);

        if (borrowedBook.getAvailableCount() == 0){
            errors.rejectValue("onStock", "Book out of stock. Come later...");
            return "redirect:/books/";
        } else{...}

Просмотр

<p th:text="${onStock}"></p>

Я не понимаю, как передать параметр и показать его клиенту. Я исследовал https://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#validation и сообщения об ошибках , но все они указывают c на форму и поле.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Вы можете использовать атрибут RedirectAttribute для достижения этого:

Контроллер

@PostMapping("/books/borrow/{id}")
    public String borrowBook(@PathVariable int id, Errors errors, RedirectAttributes redirectAttributes) {
    Book borrowedBook = bookRepository.findById(id);

    if (borrowedBook.getAvailableCount() == 0){
        errors.rejectValue("onStock", "Book out of stock. Come later...");
        redirectAttributes.addFlashAttribute("errorMessage", "We couldn't process your order!");
        return "redirect:/books/borrow/" + id;
    } else {
        //Process the request
    }

Шаблон (HTML)

<div th:if="${errorMessage}">
    <div th:text="${errorMessage}"></div>
</div>
0 голосов
/ 08 января 2020
    @PostMapping("/books/borrow/{id}")
    public String borrowBook(@PathVariable int id, Errors errors) {

        Book borrowedBook = bookRepository.findById(id);

        if (borrowedBook.getAvailableCount() == 0){
            errors.rejectValue("onStock", "Book out of stock. Come later...");
            return "redirect:/books/?errors="+errors.getAllErrors();
        }

при отображении запроса на получение

@GetMapping("/books")
public String getBooks(Model model, @RequestParam("errors") List<ObjectError> errors) 
{
    model.addAttribute("errors", errors);
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...