【发布时间】:2015-11-21 11:04:02
【问题描述】:
我已阅读以下主题:
Spring RedirectAttributes: addAttribute vs addFlashAttribute
据我了解,flash属性和plain属性的主要区别在于plain属性只能保存Strings和primitives。
但在实践中我发现了另一个区别:
我有以下控制器方法:
....
redirectAttributes.addAttribute("error", messageSource.getMessage("AdminController.negativeSum", null, Locale.forLanguageTag("ru-RU")));
return "redirect:/admin/confirmWithdrawRequest";
和
@RequestMapping(value = "admin/confirmWithdrawRequest", method = RequestMethod.GET)
public String confirmWithdrawRequestShowPage(Model model) {
Set<Event> cashOutEvents = eventJournalService.getEventsByType(EventType.CASHOUT_REQUEST);
model.addAttribute("events", cashOutEvents);
model.addAttribute("statuses", EventStatus.values());
return "admin/confirmWithdrawRequest";
}
在页面confirmWithdrawRequest.jsp
我写了以下代码片段:
<c:choose>
<c:when test="${not empty error}">
<div class="errorblock">
${error}
</div>
</c:when>
</c:choose>
现在我在我的页面上看不到错误消息。
如果我将 redirectAttributes.addAttribute 替换为 redirectAttributes.addFlashAttribute - 将显示错误消息。
请解释这种行为并展示我应该使用 addAttribute 方法的场景。
【问题讨论】:
-
downwoter,请解释原因?
-
你的理解不正确,
addAttribute和addFlashAttribute用途不同。您应该阅读文档的这两部分:Passing Data To the Redirect Target 和 Using flash attributes。 -
@Roman 是否重定向属性只是传递给 url 而没有添加到模型?
-
RedirectAttributesisModel(但它仅用于重定向的情况下),所以我不太明白这个问题。 -
我在我相信的主题中给出了详细的描述
标签: java spring spring-mvc redirect