spring-boot - 使用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");
}
提前谢谢各位。
解决方案
HTTP 仅支持 GET 方法重定向。这是为什么 HTTP 没有 POST 重定向的详细信息
有一种解决方法,您将数据发送到视图并在视图中创建表单,您应该使用所有隐藏字段来提交数据。这将是一个白页。您可以使用 javascript 自动提交表单重定向 URL。
推荐阅读
- python - 找不到表,因为 get_ddl 将表名转换为大写
- kotlin - 为什么我不能在 Kotlin 的内部类中使用外部属性?
- webpack - 如何使用 imagemin 和 CopyWebpack 插件最小化子文件夹中的图像?
- javascript - Vue 计算属性已更新,但组件未重新渲染
- javascript - 从两个字符串中找到最匹配的单词的算法
- python-3.x - 我在 django 中确认了我的电子邮件后,帐户没有激活
- vim - 执行 :CocCommand clangd.install 时出现 Vim Coc 错误消息
- stack - 如何使用 plotly 绘制堆叠条等交互式数据?
- c - 为什么在 64 位系统中 RSP 或其他寄存器是 32 位的?
- facebook - 无需用户交互即可在移动应用中获取 Instagram 提要