我有一个控制器的请求映射让我们说它是A,它接收post动作并使用它的post值作为参数,有时参数会很长,所以这就是为什么它的POST不是GET的最佳实践和安全性;
set
然后事实证明,在另一个弹簧控制器中,我需要将请求转发给第一个。
问题是我如何在将请求转发到第一个请求映射之前将其添加到请求中?举个例子来说是健康的吗?
unset
鉴于:
答案 0 :(得分:2)
您不应该手动调用其他控制器!你可以做的是使用RedirectAttributes重定向到它们,如:
@RequestMapping(value = "/doctor/doEditPatientDetails", method = RequestMethod.POST)
public String editPatientDetails(Model model, @ModelAttribute(value = "user") @Valid User user,
BindingResult result, RedirectAttributes attr, Principal principal) {
if (null != principal) {
if (result.hasErrors()) {
attr.addFlashAttribute("org.springframework.validation.BindingResult.user", result);
attr.addFlashAttribute("user", user);
attr.addAttribute("id", user.getId());
return "redirect:/doctor/editPatient/{id}";
}
}
....
return "redirect:/doctor/patients";
}
@RequestMapping(value = "/doctor/editPatient/{id}", method = RequestMethod.GET)
public String showEditPatient(Model model, @ModelAttribute("id") String id, Principal principal) {
if (null != principal) {
//here you can access the model and do what everything you want with the params.
if (!model.containsAttribute("user")) {
model.addAttribute("user", user);
}
....
}
return "/doctor/editPatient";
}
请注意,要重定向到类似"重定向的链接:/ doctor / editPatient / {id}"你必须在RedirectAttributes中添加id。也不是说有很多方法可以实现像HttpServletRequest
这样的相同功能