2011-05-19 141 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