是否有办法将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 :(得分:4)
如果您正在寻找
,可以试试@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);
}
在controller2之后
@RequestMapping(value = "/controller2", method = RequestMethod.Post)
public string doSomething2(Model model,
HttpServletRequest request,
HttpServletResponse response) {
model.addAttribute("id", request.getAttribute("id"));
return "myView";
}