0

我是 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)

4

0 回答 0