2011-05-19 64 views
2

嗨 有人能帮助我了解我是什么在下面的代码做错了,由于我正在此错误:Spring MVC的3:java.lang.IllegalStateException

Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute 
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138) 
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122) 
    at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408) 
    at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140) 
    at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) 
    at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79) 
    at org.apache.jsp.WEB_002dINF.views.signUp_jsp._jspx_meth_form_005finput_005f0(signUp_jsp.java:179) 
    at org.apache.jsp.WEB_002dINF.views.signUp_jsp._jspx_meth_form_005fform_005f0(signUp_jsp.java:111) 
    at org.apache.jsp.WEB_002dINF.views.signUp_jsp._jspService(signUp_jsp.java:74) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) 
    ... 59 more 

UserManagementController.java

@Controller 
public class UserManagementController { 
    //displays sign up page(GET) 
    @RequestMapping(method=RequestMethod.GET, value="/signUp.html") 
    public ModelAndView signUpForm() { 
     System.out.println("Sign up"); 
     return new ModelAndView("/signUp", "user", new User()); 
    } 

} 

signUp.jsp

<body> 
    <h3>Sign up</h3> 
    <table> 
     <form:form commandName="user" > 
      <tr> 
       <td>First name:</td> 
       <td><form:input path="firstName"/></td> 
      </tr> 
      <tr> 
       <td>Last name:</td> 
       <td><form:input path="lastName"/></td> 
      </tr> 
      <tr> 
       <td>Username:</td> 
       <td><form:input path="username"/></td> 
      </tr> 
      <tr> 
       <td>Password:</td> 
       <td><form:input path="password"/></td> 
      </tr> 
      <tr> 
       <td>Email:</td> 
       <td><form:input path="email"/></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" value="Submit"></td> 
      </tr> 
     </form:form> 
    </table> 
</body> 

有人能帮我理解吗?

谢谢。

+0

你可以检查当JSP呈现,如果确实存在所谓的'user'请求属性? (例如,使用'') – Bozho 2011-05-19 17:47:54

+0

@Bozho:我有一个propery'private boolean enabled = true;',它有一个getter方法,用于我在此处用作用户域对象的用户域对象。当我尝试在'signUp.jsp'上检索'$ {user.enabled}'时,它没有显示任何内容,所以我认为确实没有'user'可用作请求属性。我不明白为什么? – skip 2011-05-19 21:57:26

+0

@Bozho:我能够显示'signUp.jsp'来测试'$ {user.enabled}',因为我已经注释了完整的'

'元素,其中有''标签。 – skip 2011-05-19 22:07:58

回答

1

我错误地使用了错误的导入ModelAndView。 我本来应该使用org.springframework.web.servlet.ModelAndView,但我错误地使用的是org.springframework.web.portlet.ModelAndView

我现在有代码工作。

谢谢:)

+0

+1自己解决。如果可以,请接受你自己的答案。 – andyb 2011-05-20 13:36:14

+0

@andyb:谢谢:)。直到接下来的19个小时才能接受它:) – skip 2011-05-20 21:59:22