2013-04-03 68 views
3

我試圖讓我的控制器轉發POST請求到另一個控制器的一些參數:Spring MVC的轉發HTTP POST請求,GET請求處理程序在另一個控制器

@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請求的Controller方法。

@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請求?謝謝。

回答

3

有沒有辦法將請求轉發到prepareVoterBean作爲HTTP GET請求?

嘗試使用redirect:前綴。


return "forward:/question/prepare"; 

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

+1

使用'重定向:'你告訴客戶端請求,你重定向whant重定向他到另一個頁面。但是使用'forward:'這種情況在服務器端是透明的,所以客戶端在沒有其他請求的情況下獲得不同的響應。瞭解這種差異很重要! –

-1

@midnight藍...

更改返回類型return "forward:/prepare";