你看過Spring的RedirectAttributes嗎?我自己並沒有使用它,但它聽起來像它應該做你想做的事情。 RedirectAttributes通常用於GET /重定向/ POST模式,並且at least one user似乎認爲以這種方式傳遞會話屬性是不好的做法,但是他們繼續提到似乎沒有更好的解決方案。總之,在文檔中所示的例子:
@RequestMapping(value = "/accounts", method = RequestMethod.POST)
public String handle(Account account, BindingResult result, RedirectAttributes redirectAttrs) {
if (result.hasErrors()) {
return "accounts/new";
}
// Save account ...
redirectAttrs.addAttribute("id", account.getId()).addFlashAttribute("message", "Account created!");
return "redirect:/accounts/{id}";
}
將添加「消息」屬性的RedirectModel,如果你的控制器重定向,那麼無論方法處理重定向可以訪問像這樣的數據:
@RequestMapping(value = "/accounts", method = RequestMethod.POST)
public String handleRedirect(Model model) {
String message = (String) model.asMap().get("message");
return new ModelAndView();
}
因此添加會話屬性應該可以用同樣的方法。另有參考文獻here。
編輯 我在瀏覽Spring文檔,他們也提到了這個註釋@SessionAttributes。從文檔:
類型級別@SessionAttributes註釋聲明特定處理程序使用的會話屬性。這通常會列出應該透明地存儲在會話或某些會話存儲中的模型屬性或模型屬性類型的名稱,作爲後續請求之間的表單支持bean。
這是你需要的嗎?
還有a link to documentation on flash attributes。
redirectAttributes的主要問題是我需要將所有變量放在單獨的屬性中,如果它們不是html的形式。 – Raider