我是 spring 新手,我正在尝试 spring MVC 中的一个示例,但是我收到了提到的错误,请检查我的代码并帮助我解决问题。我尝试了不同的 URL 映射(如 beanNameUrlMapping 、simpleUrlMapping )但无法解决问题,请告诉我此问题的根本原因和解决问题的步骤
提前致谢
我的代码
在此示例中,我只是在 jSP 中输入注册详细信息,并希望在注册完成后在一次用户详细信息中显示详细信息。
我的jsp页面输入细节
Register.jsp
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<form:form method="post" action="addContact.html" commandName="User" >
<table>
<tr>
<td><form:label path="firstname">First Name</form:label></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname">Last Name</form:label></td>
<td><form:input path="lastname" /></td>
</tr>
<tr>
<td><form:label path="email">Email</form:label></td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td><form:label path="telephone">Telephone</form:label></td>
<td><form:input path="telephone" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add Contact"/>
</td>
</tr>
</table>
</form:form>
</body>
</html>
在配置文件中将请求映射到控制器 config.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.mys" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="userService" class="com.mys.services.UserServiceImpl" />
<bean name="/addContact.html" class="com.mys.login.RegistrationController"
p:userService-ref="userService" p:formView="Register" p:successView="success" />
</beans>
我的控制器类
import com.formbean.User;
import com.mys.services.UserService;
@SuppressWarnings("deprecation")
public class RegistrationController extends SimpleFormController {
private UserService userService;
public RegistrationController() {
setCommandClass(User.class);
setCommandName("user");
}
public void setUserService(UserService userService) {
this.userService = userService;
}
@Override
protected ModelAndView onSubmit(Object command) throws Exception {
User user = (User) command;
userService.add(user);
return new ModelAndView("success", "user", user);
}
}
Form bean User.java
package com.formbean;
public class User {
private String firstname;
private String lastname;
private String email;
private String telephone;
//setters , getter ()
}
package com.mys.services;
import com.formbean.User;
public class UserServiceImpl implements UserService {
@Override
public void add(User user) {
// TODO Auto-generated method stub
System.out.println("user added successfully");
}
}
这是我遇到的问题
严重:Bean 名称“用户”的 BindingResult 和普通目标对象都不能用作请求属性 java.lang.IllegalStateException:Bean 名称“用户”的 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.LabelTag.autogenerateFor(LabelTag.java:129) 在 org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java: 119) 在 org.springframework.web.servlet.tags.form.LabelTag。writeTagContent(LabelTag.java:89) at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102) at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java: 79) 在 org.apache.jsp.Register_jsp._jspx_meth_form_005fform_005f0(Register_jsp.java:112) 在 org.apache.jsp.Register_jsp._jspService(Register_jsp.java) 在 org.apache.jsp.Register_jsp._jspx_meth_form_005flabel_005f0(Register_jsp.java:188) :71) 在 org.apache.jasper.servlet.JspServletWrapper 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 的 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)。 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 的服务(JspServletWrapper.java:419) org.apache.jasper.servlet.JspServlet。service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) ) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 在 org.apache.catalina.valves.ErrorReportValve。在 org.apache.catalina.core 的 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) 调用(ErrorReportValve.java:100)。StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org .apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) 在 org.apache.tomcat.util.net .JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 在 java.lang。 Thread.run(未知来源)2013 年 9 月 4 日晚上 11:52:13 org.apache.catalina.core.StandardWrapperValve 调用严重:Servlet。路径 [/MysteryShopping] 上下文中的 servlet [jsp] 的 service() 引发异常 [java.lang.IllegalStateException:Bean 名称“用户”的 BindingResult 和普通目标对象都不能用作请求属性],根本原因是 java.lang.IllegalStateException :在 org.springframework.web.servlet.tags.form 的 org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141) 中,Bean 名称“用户”的 BindingResult 和普通目标对象都不能作为请求属性。 AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174) at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194) at org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor( LabelTag.java:129) 在 org.springframework.web。servlet.tags.form.LabelTag.resolveFor(LabelTag.java:119)