1

我的应用程序在 POST 操作后将一些信息重定向到 GET 控制器,但在与 Apache 和反向代理一起使用时会丢失信息。当我在中间没有反向代理的情况下执行此操作时,一切正常。一些想法?

    @PreAuthorize("hasRole('ROLE_ADMIN')")
    @RequestMapping(value = "aCategory", method = RequestMethod.POST)
    public String category(@RequestParam("aCategoryName") String name, Model model, RedirectAttributes attr,
                        HttpServletRequest request) {

                String redirect = "redirect:" + "http://localhost:8080/aCategory";
                aService.saveACategory(name);
                attr.addFlashAttribute("aCategoryName", name);
                return redirect;
    }


    @RequestMapping(value = "aCategory", method = RequestMethod.GET, produces = "text/html")
    public String appCategory(Model model, Principal principal) {
        String name = principal.getName(); // get logged in username
        model.addAttribute("username", name);
        return "aCategory";
    }
4

1 回答 1

1

这取决于您的集群配置和会话复制配置。因为 FlashAttributes 在将其添加到模型映射以将其显示在重定向视图上之前,首先会临时存储在会话中。因此,如果您的集群没有很好地配置正确的会话复制,那么当请求由另一个集群提供服务时,您的 FlashAttribute 可能会丢失,而不是 FlashAttribute 实际存储在会话中的位置。

有关更多详细信息,您可以参考我的问题

希望这对您有所帮助。干杯。

于 2012-11-22T10:19:19.817 回答