2013-11-21 32 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

相关问题