首页 > 解决方案 > 使用spring MVC重定向到带有post属性的外部url

问题描述

重定向到外部 url 后,我在获取属性时遇到了问题。重定向到外部 url 时,我将属性值设为 null,就像我将这些方法放在同一个 webapp 中一样。

请建议我做错了什么,或者是否有任何方法,以便我可以将属性传递给重定向的 url 并使用它。

我不希望属性显示为 Queryparams。

示例代码如下。

//app1中的控制器

@PostMapping("/redirect")
public RedirectView next(RedirectAttributes redirectAttributes, Model model, HttpServletResponse response, HttpServletRequest request) {
    request.setAttribute("payment",new Payment("1","2","3"));
    redirectAttributes.addAttribute("test", "test");

    redirectAttributes.addFlashAttribute("message", "Successfully changed..");
    redirectAttributes.addFlashAttribute("payment1",new Payment("1","2","3"));

    request.setAttribute(
              View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
    RedirectView redirectView = new RedirectView("redirect:http://localhost:8085/redirectedPostToPost", true);
    redirectView.addStaticAttribute("payment",new Payment("1","2","3"));
    return redirectView;
}

//app2的控制器。

@PostMapping("/redirectedPostToPost")
public ModelAndView redirectedPostToPost(@ModelAttribute("message") String message,@ModelAttribute("payment") Payment payment,@ModelAttribute("payment1") Payment payment1, RedirectAttributes redirectAttributes,Model model, HttpServletResponse httpServletResponse, HttpServletRequest request, ModelAndView modelview) {
    logger.info("in redirectedPostToPost:{} : modelview:{}", model, modelview.getModel());
    Map<String, ?> inputFlashMap = RequestContextUtils.getInputFlashMap(request);
    logger.info("flashmap:{}", inputFlashMap);
    return new ModelAndView("about");
}

提前谢谢各位。

标签: spring-bootredirectresponse.redirectpost-redirect-get

解决方案


HTTP 仅支持 GET 方法重定向。这是为什么 HTTP 没有 POST 重定向的详细信息

有一种解决方法,您将数据发送到视图并在视图中创建表单,您应该使用所有隐藏字段来提交数据。这将是一个白页。您可以使用 javascript 自动提交表单重定向 URL。


推荐阅读