2016-04-08 190 views
0

我有一些方法如何從控制器重定向到另一個控制器到POST方法?

@RequestMapping(value = "process", method = RequestMethod.POST) 
    public ModelAndView process(HttpServletRequest request) { 
     ModelAndView modelAndView; 
     String phoneNumber = request.getParameter("phone_number"); 
     int amount = Integer.parseInt(request.getParameter("amount")); 

     String result = validateService.validate(phoneNumber, amount); 

     if (!result.equals("OK")) { 
      modelAndView = new ModelAndView("start"); 
      modelAndView.addObject("result",result); 
     }else { 
      modelAndView = new ModelAndView("redirect:/check/process"); 
      modelAndView.addObject("phone_number",phoneNumber); 
      modelAndView.addObject("amount",amount); 
     } 
     return modelAndView; 
    } 

我需要重定向到另一個控制器POST方法。但我有一個錯誤

HTTP Status 405 - Request method 'GET' not supported 

它IST第二控制器

@Controller 
@RequestMapping("/check") 
public class CheckController { 

    @RequestMapping(value = "process", method = RequestMethod.POST) 
    public ModelAndView process(HttpServletRequest request) { 
     ModelAndView modelAndView = new ModelAndView("check"); 
     String phoneNumber = request.getParameter("phone_number"); 
     int amount = Integer.parseInt(request.getParameter("amount")); 
     return modelAndView; 
    } 
} 

當我試圖重定向

+1

tl; dr你不能,如果你需要這個,你只是不太明白http是如何工作的,你可以解釋你的用例,然後我們可以幫你找出一個有效的解決方案 – Jaiwo99

+0

我怎麼能叫新控制器從我的方法? – user5620472

+0

的問題是爲什麼? – Jaiwo99

回答

1

你不能重定向到一個POST方法,你應該在郵政/重定向看一看/獲取設計模式。如果第一個控制器中的驗證成功,則可以使用RedirectAttributes將閃存數據重定向到第二個控制器,因此您必須將/check/process的方法更改爲GET

相關問題