传值和接值 Spring MVC contorller跳转到另一个controller并传值示例均从createOrderForOld跳转到createOrder 1: forward 请求转发@RequestMapping(value ="/createOrderForOld")public String createOrder(HttpServletRequest re
Spring MVC contorller跳转到另一个controller并传值
示例均从createOrderForOld跳转到createOrder
1: forward 请求转发
@RequestMapping(value ="/createOrderForOld")
public String createOrder(HttpServletRequest request,ModelMapmodel) {
return"forward:/createOrder";
}
@RequestMapping(value ="/createOrder")
public String createOrder(String oderId,String orderName,ModelMap model) {
return"index;
}
forward跳转,是请求转发,参数自动跳转,所以当http://localhost:8080/my-app/createOrderForOld?orderId=123 该链接请求createOrderForOld接口后 请求转发到createOrder接口时,参数自动带过来了,createOrder中oderId自动赋值为“123”,参数名称需一致,否则无法传参赋值。
2: redirect 重定向
@RequestMapping(value ="/createOrderForOld")
public String createOrder(HttpServletRequest request,ModelMap model) {
model.put("orderName","newOld");
return"redirect:/createOrder?orderId=123";
}
@RequestMapping(value ="/createOrder")
public String createOrder(String oderId,String orderName,ModelMap model) {
return"index";
}
当请求http://localhost:8080/my-app/createOrderForOld 链接请求createOrderForOld接口后 请求重定向到createOrder接口时,通过model.put方法 ,createOrder中oderName自动赋值为“newOld”,通过参数拼接orderId自动赋值为“123”。
故redirect跳转到另一个controller是通过model还是拼接url均可。参数名称需一致,否则无法传参赋值。
RedirectAttributes和ModelMap或Model不推荐一起使用,因为在redirect传值时,同时存在,只有RedirectAttributes中参数值被传递,ModelMap或Model中变量不会传递。
