调用重定向发布方法会将值附加到请求参数

时间:2016-10-07 04:22:01

标签: java spring spring-mvc

我有一个我无法弄清楚的奇怪问题:

@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)。

任何帮助都会非常感激,也许对这个错误也有一些解释!

1 个答案:

答案 0 :(得分:0)

redirectView中传播先前的查询属性,这就是为什么它们会被追加到以前的属性

有关详细信息,请参阅RedirectView Documentation here

相关问题