簡體   English   中英

Spring MVC將HTTP POST請求作為HTTP GET轉發到另一個控制器

[英]Spring MVC forwarding HTTP POST request as a HTTP GET to another controller

我正在嘗試讓我的控制器使用一些參數將POST請求轉發到另一個控制器:

@Controller
@RequestMapping("/register")
public class RegisterController {
    //...
    @RequestMapping(method=RequestMethod.POST)
    public String processSubmit(@Valid Voter voter, BindingResult result, HttpServletRequest request) {
          //...
          request.setAttribute("firstName", voter.getFirstName());
          request.setAttribute("lastName", voter.getLastName());
          request.setAttribute("ssn", voter.getSsn());
          logger.info("VoterID exists, returning redirect:/question/prepare");
          return "forward:/question/get";
        }
}

@Controller
@RequestMapping("/question")
public class QuestionController {
    //...
    @RequestMapping(value="/get", 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";
    }
}

我正在嘗試對QuestionController進行編碼,以使用從processSubmit()接收的參數創建一個新模型。 問題是當我返回:/ question / get from processSubmit時,該請求作為HTTP POST請求轉發,並且服務器返回HTTP狀態405-“不支持請求方法'POST'。為了構建新模型在QuestionController中,我認為我需要從processSubmit()轉發HTTP GET請求。

我對Spring Web MVC框架文檔進行了一些研究,並讀取了重定向前綴可以用來將請求作為POST請求中的GET請求轉發,但是當我嘗試使用重定向前綴(即return redirect:/question/get )時,服務器將返回HTTP 400-客戶端發送的請求在語法上不正確。 我究竟做錯了什么?

提前致謝。

只是不要那樣做。

在幫助程序方法中分解出兩個控制器方法之間的共同部分,並從兩個控制器方法中調用此幫助程序方法。

原因是the uri of /question/get requires params(firstName, lastName, ssn) ,但是當重定向到它時,您什么也沒有。 也許可以幫助您:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM