Spring mvc SpringMVC——对声明控制器映射感到困惑

Spring mvc SpringMVC——对声明控制器映射感到困惑,spring-mvc,Spring Mvc,我是SpringMVC的新手,所以我很困惑。我在Struts中使用了MVC,所以我得到了MVC模式。只是我现在正在学习在春天做这个,我很困惑,因为映射是以不同的方式完成的。我试着咨询在线教程,但我还是不明白。下面是我目前问题的底细。有人能帮我吗?谢谢 我的JSP表单(来自GuestBook.JSP): 错误报告: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name

我是SpringMVC的新手,所以我很困惑。我在Struts中使用了MVC,所以我得到了MVC模式。只是我现在正在学习在春天做这个,我很困惑,因为映射是以不同的方式完成的。我试着咨询在线教程,但我还是不明白。下面是我目前问题的底细。有人能帮我吗?谢谢

我的JSP表单(来自GuestBook.JSP):

错误报告:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'getComments' 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.GuestBook_jsp._jspx_meth_form_005finput_005f0(GuestBook_jsp.java:256)
    at org.apache.jsp.GuestBook_jsp._jspx_meth_form_005fform_005f0(GuestBook_jsp.java:207)
    at org.apache.jsp.GuestBook_jsp._jspService(GuestBook_jsp.java:121)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
java.lang.IllegalStateException:bean名称“getComments”的BindingResult和普通目标对象都不能作为请求属性使用
位于org.springframework.web.servlet.support.BindStatus。(BindStatus.java:141)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.autogenerateId(AbstractDataBoundFormElementTag.java:147)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.resolveId(AbstractDataBoundFormElementTag.java:138)
位于org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:122)
位于org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:408)
位于org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
位于org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
位于org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
在org.apache.jsp.GuestBook\u jsp.\u jspx\u meth\u form\u 005finput\u 005f0(GuestBook\u jsp.java:256)
在org.apache.jsp.GuestBook\u jsp.\u jspx\u meth\u form\u 005fform\u 005f0(GuestBook\u jsp.java:207)
在org.apache.jsp.GuestBook\u jsp.\u jsp服务(GuestBook\u jsp.java:121)
位于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:374)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于java.lang.Thread.run(未知源)

我认为问题在于您的对象没有与jsp表单绑定。因为您可能没有将pojo类的对象放在modelMap中,因此
commandName=“getComments”
属性可以将pojo字段与表单字段绑定

这里我假设您的pojo类名是GetComments

我建议您将控制器方法的方法签名更改为以下内容

@RequestMapping(method = RequestMethod.GET) 
public ModelAndView handleRequest(@ModelAttribute GetComments getComments) throws Exception {
// your code in the controller and the return statement of your model and view.
}
更新

另外,在jsp中使用
modeldattribute=“getComments”
而不是commandName


希望这对你有帮助。干杯。

我认为问题在于您的对象没有与jsp表单绑定。因为您可能没有将pojo类的对象放在modelMap中,因此
commandName=“getComments”
属性可以将pojo字段与表单字段绑定

这里我假设您的pojo类名是GetComments

我建议您将控制器方法的方法签名更改为以下内容

@RequestMapping(method = RequestMethod.GET) 
public ModelAndView handleRequest(@ModelAttribute GetComments getComments) throws Exception {
// your code in the controller and the return statement of your model and view.
}
更新

另外,在jsp中使用
modeldattribute=“getComments”
而不是commandName


希望这对你有帮助。干杯。

您应该将
@modeldattribute GetComments GetComments
作为句柄方法的第一个参数。

您应该将
@modeldattribute GetComments GetComments
作为句柄方法的第一个参数。

我的模型实际上就是Comment。我尝试了基于这些建议的一些更改,但都不起作用。还有什么我应该看的吗?我想我已经解决了,但是我现在有一个稍微不同的问题。如果我想不出来,我会发布一个新的帖子。我的模型实际上就是Comment。我尝试了基于这些建议的一些更改,但都不起作用。还有什么我应该看的吗?我想我把它修好了,
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'getComments' 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.GuestBook_jsp._jspx_meth_form_005finput_005f0(GuestBook_jsp.java:256)
    at org.apache.jsp.GuestBook_jsp._jspx_meth_form_005fform_005f0(GuestBook_jsp.java:207)
    at org.apache.jsp.GuestBook_jsp._jspService(GuestBook_jsp.java:121)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
@RequestMapping(method = RequestMethod.GET) 
public ModelAndView handleRequest(@ModelAttribute GetComments getComments) throws Exception {
// your code in the controller and the return statement of your model and view.
}