【问题标题】:Spring MVC forwarding HTTP POST request to GET request handler in another controllerSpring MVC 将 HTTP POST 请求转发到另一个控制器中的 GET 请求处理程序
【发布时间】:2013-03-24 17:12:42
【问题描述】:

我试图让我的控制器使用一些参数将 POST 请求转发到另一个控制器:

@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@Valid Voter voter, BindingResult result, 
      //...
      request.setAttribute("firstName", voter.getFirstName());
      request.setAttribute("lastName", voter.getLastName());
      request.setAttribute("ssn", voter.getSsn());
      logger.info("VoterID exists, forwarding to /question/prepare");
      return "forward:/question/prepare";

我面临的问题是 /question/prepare 指向一个仅处理 HTTP GET 请求的控制器方法。

@RequestMapping(value="/prepare", method=RequestMethod.GET)
public String prepareVoterBean(@RequestParam String firstName, 
        @RequestParam String lastName, @RequestParam String ssn, Model model) {
    logger.info("QuestionController got GET REQUEST for " + firstName + lastName + ssn);
    VoterBean bean = new VoterBean();
    bean.setFirstName(firstName);
    bean.setLastName(lastName);
    bean.setSsn(ssn);

    model.addAttribute("questions",bean);
    return "questionPage";
}

有没有办法将请求转发到 prepareVoterBean 作为 HTTP GET 请求?谢谢。

【问题讨论】:

    标签: java spring jsp model-view-controller


    【解决方案1】:

    有没有办法将请求转发到 prepareVoterBean 作为 HTTP GET 请求?

    尝试使用redirect: 前缀。


    return "forward:/question/prepare";
    

    这不是 POST。以下链接可能有用:"22.5.3 Redirecting to views" section

    【讨论】:

    • 使用redirect: 告诉客户请求另一个页面,您重定向到的页面将他重定向到。但是使用forward:,这在服务器端透明地发生,所以客户端只是得到不同的响应而没有另一个请求。了解这种差异很重要!
    【解决方案2】:

    @午夜蓝...

    将返回类型更改为return "forward:/prepare";

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2016-01-27
      • 2013-06-10
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多