Validation MultiActionController中的Spring MVC验证
我已经使用SpringMVC 4个月了,但我仍然无法验证我的表单。这就是我想做的: 在我的jsp中: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
<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
}