Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用RedirectAttributes.addFlashAttribute刷新后将对象保留在视图中_Java_Spring_Jakarta Ee_Spring Mvc - Fatal编程技术网

Java 使用RedirectAttributes.addFlashAttribute刷新后将对象保留在视图中

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

感谢Spring3.1,我可以使用RedirectAttributes.addFlashAttribute实现Post/Redirect/Get,但它似乎有一个小问题

下面是一个方法,用于持久化表单对象,然后重定向到视图以显示该表单对象:

@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传递信息,作为一种变通方法。我必须确保没有生成转义字符。会议也很好。再次感谢。