如何将POST参数从控制器传递到另一个Controller Spring MVC?

时间:2016-04-08 11:19:14

标签: spring-mvc

我有startController并开始查看。在此视图中,我输入数量和金额并进行验证。如果验证成功,我希望将此参数(数量和数量)传递给另一个控制器,然后在此控制器中对其进行一些操作。我看到两种方式:

  1. 在第一个控制器中执行此操作,在另一个方法中使用第二个视图。但是我的控制器非常大,所有的逻辑都是这样。

  2. 创建第二个控制器和第二个视图并将参数传递给此控制器。

  3. 我做到了:

    @Controller
    @RequestMapping("/")
    public class StartController {
    
        @Autowired
        private ValidateService validateService;
    
        @RequestMapping(method = RequestMethod.GET)
        public ModelAndView printWelcome() {
            ModelAndView modelAndView = new ModelAndView("start");
            return modelAndView;
        }
    
        @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;
        }
    

    如果result != OK我重定向到新控制器

    @Controller
    @RequestMapping("/check")
    public class CheckController {
    
        @RequestMapping(value = "process", method = RequestMethod.GET)
        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;
        }
    }
    

    但是我需要使用RequestMethod.POST传递参数,但它不起作用。怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用转发到新控制器吗?   “前进:?/ TEST2参数1 = FOO&安培; param2的=栏”; 请参阅以下链接了解更多详情。 Spring forward with added parameters?