Java 使用RedirectAttributes.addFlashAttribute刷新后将对象保留在视图中
感谢Spring3.1,我可以使用RedirectAttributes.addFlashAttribute实现Post/Redirect/Get,但它似乎有一个小问题 下面是一个方法,用于持久化表单对象,然后重定向到视图以显示该表单对象:Java 使用RedirectAttributes.addFlashAttribute刷新后将对象保留在视图中,java,spring,jakarta-ee,spring-mvc,Java,Spring,Jakarta Ee,Spring Mvc,感谢Spring3.1,我可以使用RedirectAttributes.addFlashAttribute实现Post/Redirect/Get,但它似乎有一个小问题 下面是一个方法,用于持久化表单对象,然后重定向到视图以显示该表单对象: @RequestMapping(value = "/{formType}/onTheEarch", method = RequestMethod.POST) public String submitAndRedirect(SomeWebForm someWeb
@RequestMapping(value = "/{formType}/onTheEarch", method = RequestMethod.POST)
public String submitAndRedirect(SomeWebForm someWebForm,
@PathVariable("formType") String formType,
final RedirectAttributes redirectAttributes) {
// do something according to formType
// .......
redirectAttributes.addFlashAttribute("webObject", webObject);
String view = "redirect:/formType/toTheMoon";
}
下面是将用户引导到显示表单对象的视图的方法
@RequestMapping(value = "/{formType}/toTheMoon", method = RequestMethod.GET)
public String submitAndRedirect(@PathVariable("formType") String formType) {
// do something according to formType
// .......
String view = "toTheMoon";
}
到目前为止还不错,但有一个缺陷。当我将视图刷新到hemoon
时,所有内容都消失了。所以这里的问题是
(1)How does `RedirectAttributes.addFlashAttribute` works?
(2)How can I keep the object from "FlashAttribute" even after refreshing the page?
我知道对于第二个问题,我们可以避免RedirectAttributes.addFlashAttribute
,只需在URL中传递任何参数即可实现RGP模式
,但是,我尝试避免这种情况,因为参数值是敏感的,不应在浏览器上向用户公开。那怎么办呢?如上所述
闪存属性在重定向之前临时保存(通常为
在会话中)在重定向后对请求可用
并立即移除
如果您想让结果持续几个请求,可以将它们存储在带有某个标识符的会话中,并仅将标识符作为请求参数传递给结果页
我通常使用的另一种方法是检查结果页面上是否存在结果模型,如果不只是重定向到错误页面(即:用户不打算直接按刷新/访问结果页面,如果他们只是显示错误)。然后使用javascript执行客户端刷新预防,如上所述
闪存属性在重定向之前临时保存(通常为
在会话中)在重定向后对请求可用
并立即移除
如果您想让结果持续几个请求,可以将它们存储在带有某个标识符的会话中,并仅将标识符作为请求参数传递给结果页
我通常使用的另一种方法是检查结果页面上是否存在结果模型,如果不只是重定向到错误页面(即:用户不打算直接按刷新/访问结果页面,如果他们只是显示错误)。然后使用javascript执行客户端刷新预防感谢您告诉我们flashAttribute无法提供页面刷新的悲惨事实。但我想这就是它的名字。我将通过加密URL传递信息,作为一种变通方法。我必须确保没有生成转义字符。会议也很好。再次感谢。感谢你告诉我flashAttribute无法刷新页面的悲惨事实。但我想这就是它的名字。我将通过加密URL传递信息,作为一种变通方法。我必须确保没有生成转义字符。会议也很好。再次感谢。