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
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
?
- 签署applet并将其部署在Intranet中
- 将PHP Rijndael算法重写为Java(Android)
- 找不到taskdef ant任务
- Jackson在Spring Boot中错误地序列化了ZonedDateTime
- Java:确保Web应用程序仅在一个浏览器选项卡中打开
- Java中的BMP BufferedImage
- 找出表示二进制正整数所需的位数?
- 为什么要声明一个接口然后在Java中用它实例化一个对象?
- 静态方法调用
Interesting Posts