我有一个我无法弄清楚的奇怪问题:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public ModelAndView createUser(@RequestParam(value = "message", required = false) String message) {
ModelAndView mav = new ModelAndView();
mav.addObject("message", message);
return mav;
}
@RequestMapping(value = "/user", method = RequestMethod.POST)
public RedirectView use(RedirectAttributes ret, @RequestParam("message") String message) {
// does something with the message
ret.addAttribute("message", message);
RedirectView redirectView = new RedirectView();
redirectView.setContextRelative(true);
redirectView.setUrl("/user");
return redirectView;
}
在这里,我只是从用户那里得到一些输入,搞乱输入,重定向回到get处理程序。当我发布请求时出现问题:由于某种原因,保存了先前请求中的值。
例如,如果用户输入' a'在第一个请求中,' a'在get请求中观察到。但是,如果用户输入' b'在第二个请求中,字符串' a,b'观察到了。如果用户输入' c'在第三个请求中,然后是' a,b,c'观察到了。
我一直试图找出这个问题的时间最长。我有一些要求,例如不允许使用flash attributes
(我不能使用HTTPSession)。
任何帮助都会非常感激,也许对这个错误也有一些解释!
答案 0 :(得分:0)
在redirectView
中传播先前的查询属性,这就是为什么它们会被追加到以前的属性
有关详细信息,请参阅RedirectView Documentation here