我遇到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";
有没有办法解决这个问题。
答案 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";