Spring MVC既不是BindingResult也不是普通的目标

java.lang.IllegalStateException:BindingResult和bean名称’user’的普通目标对象都不可用作请求属性所以当我试图运行这个网页时我得到了这个错误,我不知道为什么。 我看到并阅读了很多关于这个错误,但我不知道是什么问题。

web.xml中:

  onallo_labor  welcome.jsp   servlet_1 org.springframework.web.servlet.DispatcherServlet 1   servlet_1 *.html   contextConfigLocation /WEB-INF/servlet_1-servlet.xml    org.springframework.web.context.ContextLoaderListener    

servlet_1-servlet.xml中:

     

CreateController:

包onallo_labor;

 import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.portlet.ModelAndView; @Controller public class CreateController { @RequestMapping(value="create",method=RequestMethod.GET) public ModelAndView create(){ return new ModelAndView("create","user",new User()); } @RequestMapping(value="",method=RequestMethod.GET) public ModelAndView welcome(){ return new ModelAndView("welcome"); } @RequestMapping(value="create_ready",method=RequestMethod.POST) public String addContact(@ModelAttribute("user") User user,Model model) { model.addAttribute("username",user.getUsername()); model.addAttribute("birthday",user.getBirthday()); return "create_ready"; } } 

create.jsp:

       User Account Creation   

Registration Form

Username:
Password:
Birthday:

create_ready.jsp:

      Insert title here   

Submitted User Information

Name ${username}
Birthday ${birthday}

用户类:

 package onallo_labor; public class User { public User(){} public String username; public String password; public String birthday; public String getUsername(){return this.username;} public void setUsername(String un){this.username=un;} public String getPassword(){return this.password;} public void setPassword(String pw){this.password=pw;} public String getBirthday(){return this.birthday;} public void setBirthday(String bd){this.birthday=bd;} } 

有关于文件结构的图片。

http://kepkezelo.com/images/lm418k9xegg2aukio3.png

UPDATE1:所以我更改了User类中的方法名称,现在这里是错误:

 org.apache.jasper.JasperException: An exception occurred processing JSP page /create.jsp at line 20 17:  18:  19: Username:  20: 
21: 22: 23: Password: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:413) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute org.springframework.web.servlet.support.BindStatus.(BindStatus.java:144) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154) org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:117) org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422) org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142) org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84) org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80) org.apache.jsp.create_jsp._jspx_meth_form_005finput_005f0(create_jsp.java:181) org.apache.jsp.create_jsp._jspx_meth_form_005fform_005f0(create_jsp.java:125) org.apache.jsp.create_jsp._jspService(create_jsp.java:78) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

谢谢你的回答。

你的User类是一个java bean,它必须遵循某些命名约定是错误的。 你的setter和getter有错误的名字,例如,

 'N' needs to be small public String getUserName(){return this.username;} Change to: public String getUsername(){return this.username;} 

问题是各种各样的问题。 你有

 import org.springframework.web.portlet.ModelAndView; 

 @RequestMapping(value="create",method=RequestMethod.GET) public ModelAndView create(){ return new ModelAndView("create","user",new User()); } 

来自portlet库的ModelAndView不是DispatcherServlet堆栈的默认可识别返回类型。 因此,它将被视为普通Object并添加到模型本身。 因为您的URI是.../create ,所以Spring将使用最后一个路径元素映射到视图。 因此,它最终会将您的create.jsp解析为视图但出于错误的原因。

ModelAndView更改为

 import org.springframework.web.servlet.ModelAndView; 

我不知道为什么你有一个portlet依赖,但如果你不需要它就摆脱它。

你也失踪了

  

来自您的servlet上下文。

您将映射到

  servlet_1 *.html  

所以我不清楚你发送请求的是什么url, ../create.html