我正在使用spring 3.2.4,我有一个简单的控制器,它接受一个参数,设置它,并重定向页面。出于某种原因,即使重定向后它也会保留参数。即页面以“/”开头并以“/?globalMessage = hereforever”结尾,我已经尝试清除modelMap,但这不起作用。我可能会误解一些问题。我也将模型添加到HandlerInterceptor中的postHandle。
@RequestMapping(value = "globalMessage", method = RequestMethod.POST)
public String setGlobalMessage(@RequestParam String globalMessage) {
globalProperties.setProperty("globalMessage", globalMessage);
return "redirect:/";
}
这是前面的
中的jsp代码<form method="post" action="/globalMessage">
<input name="globalMessage" type="text" name="message"/>
<input id="submitbutton" type="submit"/>
</form>
答案 0 :(得分:3)
Spring的重定向视图会自动将模型属性公开为URL参数:https://jira.springsource.org/browse/SPR-1294。如果模型中某处设置了globalMessage
,则会将其附加到重定向网址。
你可以告诉Spring不要使用setExposeModelAttributes
方法执行此操作。
@RequestMapping(value = "globalMessage", method = RequestMethod.POST)
public String setGlobalMessage(@RequestParam String globalMessage) {
globalProperties.setProperty("globalMessage", globalMessage);
RedirectView redirect = new RedirectView("/");
redirect.setExposeModelAttributes(false);
return redirect;
}