Neither BindingResult nor plain target object for bean name available as request attribute - Spring MVC

18,885

Solution 1

I tried your configuration and I didnt get your error. But I had to change something.

The viewResolver is adding .jsp to your view name. So IMHO you should change

 return new ModelAndView("/student.jsp", "SpringWeb", new Student());

to

 return new ModelAndView("student", "SpringWeb", new Student());

So remove jsp and the "/" before student.

Then it worked for me. But as I said I didnt get your error

Solution 2

Edit:

It brothers me that your exceptions states "bean name 'command'". I think you have some delopyment issue, because the code you posted here does not match the exception.


Remove the commandName attribute from your form tag, the modelAttribute attribute is enought:

<form:form modelAttribute="SpringWeb" method="POST" action="/HelloWeb/addStudent" >

After reading this article, it seams that this is not the solution for your problem, but anyway you do not need to specifiy them twice.

Share:
18,885
Chandrasekar
Author by

Chandrasekar

Updated on June 14, 2022

Comments

  • Chandrasekar
    Chandrasekar almost 2 years

    I am getting this error

    java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute
    

    This is the stack trace

    org.apache.jasper.JasperException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:534) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:452) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:178) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:198) org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:129) org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:119) org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:89) org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) org.apache.jsp.student_jsp._jspx_meth_form_005flabel_005f0(student_jsp.java:182) org.apache.jsp.student_jsp._jspx_meth_form_005fform_005f0(student_jsp.java:117) org.apache.jsp.student_jsp._jspService(student_jsp.java:79) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    This is my web.xml file

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
        xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
    
        <display-name>Spring MVC Form Handling</display-name>
        <welcome-file-list>
        <welcome-file>student.jsp</welcome-file>
      </welcome-file-list>
    
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    
        <servlet>
            <servlet-name>HelloWeb</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/HelloWeb-Servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>   
    
        <servlet-mapping>
            <servlet-name>HelloWeb</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

    This is my applicationContext.xml file

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
    
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans     
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
       <context:component-scan base-package="com.Prime" />
    <mvc:annotation-driven/>
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/JSP/" />
          <property name="suffix" value=".jsp" />
       </bean>
    
    
    
    </beans>
    

    This is my student.jsp file

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
    <html>
    <head>
        <title>Spring MVC Form Handling</title>
    </head>
    <body>
    
    <h2>Student Information</h2>
    <form:form modelAttribute="SpringWeb" method="POST" action="/HelloWeb/addStudent" commandName="SpringWeb">
       <table>
        <tr>
            <td><form:label path="name">Name</form:label></td>
            <td><form:input path="name" /></td>
        </tr>
        <tr>
            <td><form:label path="age">Age</form:label></td>
            <td><form:input path="age" /></td>
        </tr>
        <tr>
            <td><form:label path="id">id</form:label></td>
            <td><form:input path="id" /></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Submit"/>
            </td>
        </tr>
    </table>  
    </form:form>
    </body>
    </html>
    

    And this is my StudentController.java file

    package com.Prime;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ModelAttribute;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.ui.ModelMap;
    
    @Controller
    public class StudentController {
    
       @RequestMapping(value = "/student", method = RequestMethod.GET)
       public ModelAndView student() {
          return new ModelAndView("/student.jsp", "SpringWeb", new Student());
       }
    
       @RequestMapping(value = "/addStudent", method = RequestMethod.POST)
       public String addStudent(@ModelAttribute("SpringWeb")Student student, 
       ModelMap model) {
          model.addAttribute("name", student.getName());
          model.addAttribute("age", student.getAge());
          model.addAttribute("id", student.getId());
    
          return "result";
       }
    }
    

    Can anyone help me with this error.... Thanks in advance