Spring

Dynamic list binding in Spring MVC

http://mattfleming.com/node/134

Validation in MultiActionController

This example just works!

public class EventValidator implements Validator {
    public boolean supports(Class clazz) {
        //return EventDO.class.equals(clazz);
        return clazz.equals(EventDO.class);
    }
 
    public void validate(Object obj, Errors e) {
        ValidationUtils.rejectIfEmpty(e, "title","error_mandatory","title cannnot be null");
    }
}
 
----
 
public class EventController extends MultiActionController{
    BindingResult errors; //Declaring errors as instance variable to catch error
 
    //the last param acts as a command object
    public ModelAndView submitEvent(HttpServletRequest request, HttpServletResponse response, EventDO event) throws Exception {
 
        validate(event);
        if (errors.hasErrors()) {
 
            return  new ModelAndView("events/events",errors.getModel());
        }
 
        return new ModelAndView("events/events");
   }
    public void validate(Object command)
    {
        ValidationUtils.invokeValidator(new EventValidator(), command, errors);
    }
 
    @Override
    protected void bind(HttpServletRequest request, Object command) throws Exception {
        ServletRequestDataBinder binder = createBinder(request, command);
        binder.bind(request);
        errors = binder.getBindingResult();
    }
}
 
----
 
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
 
<html>
 
<body>
<form:form method="post" name="suggestionsController" action="events.htm?method=submitEvent">
<form:errors path="title"/> <input name="title"/>
 
</form:form>
 
</body>
 
</html>
 
----
 
     <bean id="eventController" class="com.iranoz.controller.EventController">
            <property name="methodNameResolver" ref="paramResolver"/> 
        <property name="validators" ref="eventValidator"/>
      </bean>
page_revision: 4, last_edited: 1251094909|%e %b %Y, %H:%M %Z (%O ago)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License