2014-03-26 49 views
1

我有一個redirect的問題。我正在開發一個web應用程序,在spring mvc中使用ModelAndView來在新頁面或主頁上進行forword。如何重定向提交表單?

1.當我提交表單modelAndView轉發到新頁面但url沒有變化。

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

你想用彈簧API重定向到網頁? – Vijay

回答

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; 
    } 
} 
+0

,我試過你的答案,但它不工作,現在我得到一個錯誤:請求的資源(/ HRportal/homePage)不可用。有沒有其他方法可以解決這個問題? – user3264841

+0

web.xml中的Spring Dispatcher Servlet映射是什麼?你應該也包括它,我的意思是:如果它被映射爲\t \t /action/*,那麼重定向應該看起來像這樣:return「redirect:/ action /」+ GlobalConstants.HOME_PAGE; – codependent

+0

servlet映射是 * .do它將變成「redirect:login.do /」+ GlobalConstants.HOME_PAGE .right? – user3264841

1

只需使用"redirect:"字符串。事情是這樣的:

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

或者只是改變你的方法String返回類型,做:

return "redirect:/yourPage.htm";