Neither BindingResult nor plain target object for bean name 'book' available as request attribute

575
18 октября 2017, 05:00

Стартовая страница. В настройках tomcat http://localhost:8080/index

При компиляции возникает ошибка такого рода

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'book' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:141)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:132)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:116)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)

BookController.java

@Controller
@RequestMapping("/")
@SessionAttributes({"book", "selectedBook", "isUpdating", "bookList"})
public class BookController {
@Autowired
private MessageSource messageSource;
@Autowired
private Serviceable<Book> bookService;

@ModelAttribute("book")
public Book getBook(){
    return new Book();
}
@RequestMapping(value = {"/index", "/books", "/"}, method = RequestMethod.GET)
public String setupForm(ModelMap model){
    Book book = new Book();
    //ModelAndView mv= new ModelAndView("books", "book", book);
    //ModelMap model = mv.getModelMap();
    //Map<String, Object> map = mv.getModel();
    //map.put("selectedBook", new 
    //map.put("book", new Book());
    //map.put("bookList", bookService.getAll());
    //map.put("isUpdating", false);
    model.addAttribute("book", book);
    model.addAttribute("bookList", bookService.getAll());
    model.addAttribute("selectedBook", new Book());
    model.addAttribute("isUpdating", false);
    return "books";
}
@RequestMapping(value="/book.do", method=RequestMethod.POST)
public String doActions(@ModelAttribute("book") Book book,
                        @ModelAttribute("selectedBook") Book selectedBook,
                        BindingResult result,
                        @RequestParam String action,
                        Map<String, Object> map, ModelMap model){
/*some code*/

books.jsp

<%@ include file="/WEB-INF/pages/includes.jsp"%>
<html>
<head>
<title>Bookshelf</title>
</head>
<body>
<h1>Books Data</h1>
<div class="edit_form">
<form:form action="book.do" method="POST" modelAttribute="book">
....

структура проекта

P.S.: файлов диспатчера нет - все делаю через JavaConfig

что я уже пробовал:

  1. Делать через Model
  2. делать через ModelMap
  3. делать через ModelAndView
  4. загружать в @SessionAtttibutes
  5. пересобирал проект (Maven: clean - compile|install)
  6. создавал новый/перезапускал сервер
  7. привязывал @ModelAttrubute("book")

Средства сборки и компиляции

  1. Maven
  2. IntellijIdea UltimateVersion
  3. Tomcat 8.5.23
  4. Spring 4.3.0.RELEASE
  5. Hibernate 5.2.10.Final
  6. MySQL 5.1.34
Answer 1

предположительно: ошибка была в том, что я не за маппил свой контроллер, на что ругался DispatcherServlet

@Configuration
@EnableWebMvc
@ComponentScan("com.javarush")
public class WebAppConfig extends WebMvcConfigurerAdapter{
/*config options*/
READ ALSO
Как спарсить текст с картинки? [требует правки]

Как спарсить текст с картинки? [требует правки]

Есть 1000 картинок 2-х типов: 1) с чёрным текстом и белым фоном 2) инверсия первой(с белым текстом и чёрным фоном)

299
Java класс для простой работы с датой и временем

Java класс для простой работы с датой и временем

Сейчас в проекте есть класс Date, где хранится day, month и yearТакже есть класс Time в котором hour и minute

222
Организация архитектуры wildcard - интерфейсов

Организация архитектуры wildcard - интерфейсов

Есть интерфейсы (много) такого типа

190
Как вывести текущий объект массива в цикле

Как вывести текущий объект массива в цикле

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

294