如何重定向提交表单?

时间:2014-03-26 13:48:35

标签: spring spring-mvc spring-security

我遇到redirect问题。我正在使用spring mvc开发一个Web应用程序,并在新页面或主页上使用ModelAndView forword。

1.当我提交表单时,模型会转发到新页面,但网址没有得到更改。

public ModelAndView processForm(@ModelAttribute("registerForm")EmpRegistrationForm registerForm,HttpServletRequest request, HttpServletResponse response, ModelMap model)
    {
        registerForm = (EmpRegistrationForm) model.get("registerForm");

        ModelAndView model1= new ModelAndView(GlobalConstants.HOME_PAGE);
        model=super.execute(model);

        EmpRegisterWorker worker=new EmpRegisterWorker();
        boolean status=worker.validateUser(registerForm);
        if(status)
        {
            return new ModelAndView(GlobalConstants.HOME_PAGE);
        }
        else
        {
            return new ModelAndView(GlobalConstants.ERROR_PAGE);
        }

2.如果我刷新该页面,表单将被提交两次,这是不可取的。

3.我必须再次点击两次或三次才能返回新页面。

4.我创建了GlobalConstants类,我在其中声明了所有形式:

public static final String ERRORPAGE="errorPage";
    public static final String HOME_PAGE="homePage";

有没有办法解决这个问题。

2 个答案:

答案 0 :(得分:1)

非常简单,将方法返回类型更改为String并使用重定向为视图添加前缀:

public String processForm(@ModelAttribute("registerForm")EmpRegistrationForm    registerForm,HttpServletRequest request, HttpServletResponse response, ModelMap model)
{
    registerForm = (EmpRegistrationForm) model.get("registerForm");

    ModelAndView model1= new ModelAndView(GlobalConstants.HOME_PAGE);
    model=super.execute(model);

    EmpRegisterWorker worker=new EmpRegisterWorker();
    boolean status=worker.validateUser(registerForm);
    if(status)
    {
        return "redirect:"+GlobalConstants.HOME_PAGE;
    }
    else
    {
        return "redirect:"+GlobalConstants.ERROR_PAGE;
    }
}

答案 1 :(得分:1)

只需使用"redirect:"字符串即可。像这样:

return new ModelAndView("redirect:/yourPage.htm");

或者只是将您的方法更改为String返回类型并执行:

return "redirect:/yourPage.htm";