2013-11-21 29 views
1

有沒有辦法使用其他參數將POST請求從一個控制器轉發到另一個控制器?轉發帶有附加參數的POST請求

比方說,我有一個表格是這樣的:

<form action"${contextPath}/controller1/post"> 
    <input name="field1" type="text"/> 
    <input name="field2" type="text"/> 
    <input value="submit" type="submit"/> 
</form> 

這種形式將張貼到controller1.post()方法。

但現在我有另一個控制器 - controller2還與post方法。 我現在想發佈到controller2.post,所以我可以在轉發到controller1之前向請求中添加一些參數。 有沒有辦法做到這一點?

+0

找什麼

@RequestMapping(value = "/controller1/{id}", method = RequestMethod.Post) public void doSomething( @PathVariable Long id, HttpServletRequest request, HttpServletResponse response) { request.setAttribute("id",Id); RequestDispatcher rd = request.getRequestDispatcher("your url/controller2"); rd.forward(request, response); } 

畢竟控制器都只是在服務器side..Therefore類,如果您需要改變你仍然可以調用controller1和調用controller2的內容。從controller2得到結果並添加你想要的內容.Point是,如果你在瀏覽器中調用controller2,你會看到它的地址。所以你可以再次從controller2調用controller1並使用controller2結果。根據什麼方式選擇你想在瀏覽器中顯示的網址。 – Anton

+0

我知道控制器只是類,只要方法是公開的,我就可以從另一個控制器的方法中調用另一個控制器的方法。 我不知道的是如何在請求中爲參數集添加一個參數。 – 0x56794E

回答

2

你可以試試,如果這是你在控制器2

@RequestMapping(value = "/controller2", method = RequestMethod.Post) 
public string doSomething2(Model model,  
     HttpServletRequest request, 
     HttpServletResponse response) { 

    model.addAttribute("id", request.getAttribute("id")); 

    return "myView"; 
} 
+0

沒有。這不是我正在尋找的。 我需要直接修改請求併爲請求添加一個參數,就像參數來自表單一樣。 – 0x56794E

相關問題