java - 使用 Spring Web MVC 的 ModelAndView 返回相同的 View Controller

标签 java jakarta-ee spring-mvc

我正在使用 Spring Web MVC 和 Hibernate 来开发我的应用程序。

我的 login.jsp 页面有以下代码:

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

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

现在,我的 servlet.xml 文件有以下代码:

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

我的 UserValidateFormController 有以下代码:

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;

    }

在处理提交事件时,在我的 UserValidateFormController 中,我正在检查用户名和密码是否正确..

它工作正常,如果两者都匹配,则重定向到 layout.jsp,这也很好。

但如果用户名或密码不正确,那么我想重定向到相同的 login.jsp 页面并显示相应的错误。

请建议我如何重定向到同一 View Controller 的解决方案..

提前致谢..

最佳答案

最后用下面一行代码解决了这个问题:

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

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

谢谢...

关于java - 使用 Spring Web MVC 的 ModelAndView 返回相同的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642784/

相关文章:

java - 在 Java 中如何将 ASCII 字符写入文件?

Java Flux 与 Observable/BehaviorSubject

java - 使用 Hashmap 比较键和值,并根据相似键将值加在一起

eclipse - eclipse 中的动态 web 应用程序无法在 apache 服务器上运行

Java EE 条件过滤器映射

java - 如何在 JSP/Servlet 中执行表单验证?

java - 在 EJB 环境中是否存在类似于 .wait() 和 .notify() 的行为?

javascript - 我们如何将数据动态传递给响应式日历中的事件?

spring - 向 ModelAndView 添加属性

java - Tomcat 或 Jetty 上的 Spring Web 应用程序 Controller 内基于事件的编程