2011-08-30 140 views
0

我一直在使用Spring MVC 4個月,但我仍然無法驗證我的表單。這就是我要做的:MultiActionController中的Spring MVC驗證

<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!" /> 

在我的控制器(這延長了MultiActionController)

@RequestMapping(value="/ordertypeadd.htm", method=RequestMethod.POST) 
    public ModelAndView ordertypeadd(HttpServletRequest request, 
      HttpServletResponse response, OrderType orderType)throws Exception{ 
      orderTypeDAO.save(orderType); 
      return new ModelAndView("redirect:ordertypelist.htm"); 
    } 

在我爲spring-servlet.xml:

在我的jsp

<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> 

當然,我的「myOrderTypeValidator」是:

<bean id="myOrderTypeValidator" class="pl.edm.orders.spring.OrderTypeValidator"> 

我的Validator類(到目前爲止,只檢查 「稱號」 說明):

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"); 
    } 

} 

編譯OK,一切工作,電子XCEPT當我填寫表格,我得到這個:

org.springframework.web.bind.ServletRequestBindingException:綁定到對象'command'的錯誤 ;嵌套的異常是 org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1 errors 字段'title'上對象'command'中的字段錯誤:rejected value []; 代碼[title.command.title,title.title,title.java.lang.String,title]; arguments [];默認消息[空] org.springframework.web.bind.ServletRequestDataBinder.closeNoCatch(ServletRequestDataBinder.java:122) org.springframework.web.servlet.mvc.multiaction.MultiActionController.bind(MultiActionController.java:540) 有機springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:468) org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408) org.springframework.web。 servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet的。 JA VA:790) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) org.springframework.web.servlet .FrameworkServlet.doPost(FrameworkServlet.java:585) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework。 web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

根源

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1 errors 字段'title'的對象'command'中的字段錯誤:rejected value []; 代碼[title.command.title,title.title,title.java.lang.String,title]; arguments [];默認消息[null] org。springframework.web.bind.ServletRequestDataBinder.closeNoCatch(ServletRequestDataBinder.java:124) org.springframework.web.servlet.mvc.multiaction.MultiActionController.bind(MultiActionController.java:540) org.springframework.web.servlet.mvc。 multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:468) org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408) org.springframework.web.servlet.mvc.AbstractController.handleRequest( AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) org.springframework .web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java :585) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

回答

0

可以是U已經改正錯誤,但如果任何人^ h AVE同樣的錯誤ü可以嘗試在模型類添加一個構造函數..

例如:

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

我不知道是否會工作到你的,但它在我的項目工作。

Thanx