Home » Java » Return same view controller using ModelAndView of Spring Web MVC

Return same view controller using ModelAndView of Spring Web MVC

Posted by: admin December 28, 2021 Leave a comment


I am using Spring Web MVC and Hibernate for developing my application.

My login.jsp page has following code :

<form:form method="post" commandName="User">
   User Name : 
      <form:input path="email"/>
   Password : 
     <form:input path="password"/>

<input type="submit" align="center" value="Execute">

Now, My servlet.xml file has following code :

 <bean name="/uservalidate.htm" class="com.sufalam.mailserver.presentation.web.UserValidateFormController">
        <property name="sessionForm" value="true"/>
        <property name="commandName" value="User"/>
        <property name="commandClass" value="com.sufalam.mailserver.bean.User"/>
        <property name="formView" value="login"/>
        <property name="successView" value="layout.jsp"/>
        <property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>

My UserValidateFormController has following code :

public class UserValidateFormController extends SimpleFormController {

    /** Logger for this class and subclasses */
    protected final Log logger = LogFactory.getLog(getClass());
    private IUserSecurityProcessor userSecurityProcessor;

    public ModelAndView onSubmit(Object command)
            throws ServletException, SufalamException {
            ModelAndView mav = new ModelAndView();
            Map model = new HashMap();

        String username = ((User) command).getEmail();
        String password = ((User) command).getPassword();
        List userChecking = new ArrayList();
        userChecking = userSecurityProcessor.findByAll(username, password, 0.0);
        System.out.println("userChecking length = "+userChecking.size());
        if (userChecking.size() == 1) {
            return new ModelAndView("layout");
            //return new ModelAndView(new RedirectView(getSuccessView()));

        return new ModelAndView("login", model);


    protected Object formBackingObject(HttpServletRequest request) throws ServletException {
        User user = new User();
        return user;

  public void setUserSecurityProcessor(IUserSecurityProcessor userSecurityProcessor) {
        this.userSecurityProcessor = userSecurityProcessor;


In my UserValidateFormController at the time of handing submit event, i am checking that username and password are correct or not..

It’s working fine & if both are matching then its redirecting to layout.jsp, that’s also fine.

But if username or password are incorrect then i want to redirect to same login.jsp page and display appropriate error..

Please suggest me the solution that what to do redirecting to same view controller..

Thanks in advance..


Finally solve this issue with following line of code :

return new ModelAndView(new RedirectView(getSuccessView()));


return new ModelAndView(new RedirectView("success.htm");



If you have an InternalResourceViewResolver configured, you can do it like this:

return new ModelAndView("redirect:success.htm");

In my opinion, this is clearer.


I would say all you have to do is populate your model before using it again:

    if (userChecking.size() == 1) {
        return new ModelAndView("layout");
        //return new ModelAndView(new RedirectView(getSuccessView()));
    model.put("User", command);
    return new ModelAndView("login", model);


… not sure if this is what you’re looking for, but is this how I solve your problem:

    else { return new ModelAndView( "login", model ); }

… otherwise I missed something in your question. It seems to me you’re pretty far to get stuck like this.