Validation MultiActionController中的Spring MVC验证

Validation MultiActionController中的Spring MVC验证,validation,spring-mvc,Validation,Spring Mvc,我已经使用SpringMVC 4个月了,但我仍然无法验证我的表单。这就是我想做的: 在我的jsp中: <form:form method="POST" action="ordertypeadd.htm" commandName="orderType"> ID Parent: <form:input path="id_parent"/><form:errors path="id_parent" /><br/> Name: <form:input

我已经使用SpringMVC 4个月了,但我仍然无法验证我的表单。这就是我想做的:

在我的jsp中:

<form:form method="POST" action="ordertypeadd.htm" commandName="orderType">
ID Parent: <form:input path="id_parent"/><form:errors path="id_parent" /><br/>
Name: <form:input path="title"/> <form:errors path="title" /> <br/>
Description: <form:input path="description"/> <form:errors path="description" /><br/>
<input type="submit" value="Submit!" />
在我的spring-servlet.xml中:

<bean name="/ordertypeadd.htm" class="pl.edm.orders.spring.OrderTypeController">
        <property name="orderTypeDAO" ref="myOrderTypeDAO" />
        <property name="validators">
        <list>
        <ref bean="myOrderTypeValidator"/>
        </list>
        </property>
    </bean>
编译正常,一切正常,但当我填写表格时,我得到以下信息:

org.springframework.web.bind.ServletRequestBindingException:错误 绑定到对象“命令”;嵌套异常是 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1个错误 字段“title”上的对象“command”中的字段错误:拒绝值[]; 代码[title.command.title,title.title,title.java.lang.String,title]; 论点[];默认消息[空] org.springframework.web.bind.ServletRequestDataBinder.closeNoCatchServletRequestDataBinder.java:122 org.springframework.web.servlet.mvc.multiaction.MultiActionController.bindMultiActionController.java:540 org.springframework.web.servlet.mvc.multiaction.MultiActionController.InvokeNameMethodMultiactionController.java:468 org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternalMultiActionController.java:408 org.springframework.web.servlet.mvc.AbstractController.handleRequestAbstractController.java:153 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handleSimpleControllerHandlerAdapter.java:48 org.springframework.web.servlet.DispatcherServlet.doDispatcherservlet.java:790 org.springframework.web.servlet.DispatcherServlet.doServiceDispatcherServlet.java:719 org.springframework.web.servlet.FrameworkServlet.processRequestFrameworkServlet.java:669 org.springframework.web.servlet.FrameworkServlet.doPostFrameworkServlet.java:585 javaservlet.http.HttpServlet.serviceHttpServlet.java:641 javaservlet.http.HttpServlet.serviceHttpServlet.java:722 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternalCharacterEncodingFilter.java:88 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:76

根本原因

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1个错误 字段“title”上的对象“command”中的字段错误:拒绝值[]; 代码[title.command.title,title.title,title.java.lang.String,title]; 论点[];默认消息[空] org.springframework.web.bind.ServletRequestDataBinder.closeNoCatchServletRequestDataBinder.java:124 org.springframework.web.servlet.mvc.multiaction.MultiActionController.bindMultiActionController.java:540 org.springframework.web.servlet.mvc.multiaction.MultiActionController.InvokeNameMethodMultiactionController.java:468 org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternalMultiActionController.java:408 org.springframework.web.servlet.mvc.AbstractController.handleRequestAbstractController.java:153 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handleSimpleControllerHandlerAdapter.java:48 org.springframework.web.servlet.DispatcherServlet.doDispatcherservlet.java:790 org.springframework.web.servlet.DispatcherServlet.doServiceDispatcherServlet.java:719 org.springframework.web.servlet.FrameworkServlet.processRequestFrameworkServlet.java:669 org.springframework.web.servlet.FrameworkServlet.doPostFrameworkServlet.java:585 javaservlet.http.HttpServlet.serviceHttpServlet.java:641 javaservlet.http.HttpServlet.serviceHttpServlet.java:722 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternalCharacterEncodingFilter.java:88 org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:76


可能您已经修复了错误,但如果其他人有相同的错误,您可以尝试在模型类中添加构造函数

例如:

public Class Person{
  private String id;
  private String name;
  public Person(String id){
     this.id=id;
  }
  //setter getter and default constructor here
}
我不确定它是否适用于你的,但它适用于我的项目

塔克斯

<bean id="myOrderTypeValidator" class="pl.edm.orders.spring.OrderTypeValidator">
public class OrderTypeValidator implements Validator{

    public boolean supports(Class arg0) {
        return OrderType.class.equals(arg0);
    }

    public void validate(Object arg0, Errors arg1) {
        ValidationUtils.rejectIfEmpty(arg1, "title", "title");
    }

}
public Class Person{
  private String id;
  private String name;
  public Person(String id){
     this.id=id;
  }
  //setter getter and default constructor here
}