Neither BindingResult nor plain target object for bean available as request attribute
Ошибка при запуске приложения Spring MVC — BindingResult nor plain target object for bean available as request attribute означает, что приложение не может найти объект, соответствующий атрибуту, указанному в форме.
Пример из статьи Spring MVC — Hello World, пример приложения :
index.jsp
1 2 3 4 5 6 7 8 9 10 |
<body> <spring:form method="post" modelAttribute="userJSP" action="check-user"> Name: <spring:input path="name"/> (path="" - указывает путь, используемый в modelAttribute=''. в нашем случае User.name) <br/> Password: <spring:input path="password"/> <br/> <spring:button>Next Page</spring:button> </spring:form> </body> |
Если обратиться к странице с этим кодом, то вначале будет выполнен поиск атрибута userJSP и объекта на который он ссылается. Если его еще не существует, то вылезет ошибка BindingResult nor plain target object for bean available as request attribute.
Чтобы это исправить, нужно создать объект раньше, чем будет вызвано представление. Относительно примера выше это делается вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@Controller public class MainController { /*First method on start application*/ /*Попадаем сюда на старте приложения (см. параметры аннотации и настройки пути после деплоя) */ @RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView main() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("userJSP", new User()); modelAndView.setViewName("index"); return modelAndView; } } |
Т.е. сначала создается объект new User() и пишется в userJSP, а потом открывается страница с представлением, которая использует modelAttribute=’userJSP’.
0