Java 从另一篇文章执行临时_重定向时添加文章数据

Java 从另一篇文章执行临时_重定向时添加文章数据,java,spring,spring-mvc,Java,Spring,Spring Mvc,我正在开发一个包含购买屏幕的网站。我将使用类似于贝宝的服务。我只需要将POST数据发送到此服务,该服务将从此开始处理 问题是,我想隐藏一些字段。因此,输入类型隐藏不是一个选项。因此,我添加了一个只有一个数据的简单表单,productId,然后用添加的数据重定向帖子 现在的问题是,这些数据是作为URL参数发送的(我可以在浏览器的URL中看到这些值)。我希望这些值(在示例中为userId和reference)作为POST数据。我怎样才能做到这一点 守则: @RequestMapping(value

我正在开发一个包含购买屏幕的网站。我将使用类似于贝宝的服务。我只需要将POST数据发送到此服务,该服务将从此开始处理

问题是,我想隐藏一些字段。因此,输入类型隐藏不是一个选项。因此,我添加了一个只有一个数据的简单表单,productId,然后用添加的数据重定向帖子

现在的问题是,这些数据是作为URL参数发送的(我可以在浏览器的URL中看到这些值)。我希望这些值(在示例中为userId和reference)作为POST数据。我怎样才能做到这一点

守则:

@RequestMapping(value = "/doPurchase", method = RequestMethod.POST)
public ModelAndView doPurchase(Principal principal, HttpServletRequest request,
        @RequestParam(value = "productId", required = true) String productId, RedirectAttributes attributes) {
    //
    Product product = productRepository.findByProductCode(productId);
    //
    // DO STUFF...
    //
    ModelAndView modelAndView = new ModelAndView("redirect:PAYMENT_SERVICE_URL");

    attributes.addAttribute("UserId", "USER_ID");
    attributes.addAttribute("Reference", "REF_ID");
    //
    // ETC ETC

    //
    request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT);
    return modelAndView;
}

无法通过
301
/
302
重定向到POST请求。
307
可以重复POST请求,但不能修改

参考:

一些旁路方法:

  • 让您的
    支付服务\u URL
    同时接受GET和POST请求

  • 让中间页面接受重定向的GET请求,并生成一个HTML POST表单到
    支付服务\u URL
    ,并通过JavaScript自动提交表单

  • >P> >如果使用<代码> Spring Frase,请考虑使用<代码> Flash属性 >:

  • 如果确实希望以常规方式隐藏某些参数,可以将值存储在数据库表中,并通过GET请求将行的
    id
    传递到重定向页面,然后通过
    id
    从数据库表加载参数。或者,您可以对参数进行加密/解密


  • 无法通过
    301
    /
    302
    重定向到POST请求。
    307
    可以重复POST请求,但不能修改

    参考:

    一些旁路方法:

  • 让您的
    支付服务\u URL
    同时接受GET和POST请求

  • 让中间页面接受重定向的GET请求,并生成一个HTML POST表单到
    支付服务\u URL
    ,并通过JavaScript自动提交表单

  • >P> >如果使用<代码> Spring Frase,请考虑使用<代码> Flash属性 >:

  • 如果确实希望以常规方式隐藏某些参数,可以将值存储在数据库表中,并通过GET请求将行的
    id
    传递到重定向页面,然后通过
    id
    从数据库表加载参数。或者,您可以对参数进行加密/解密


  • 使用闪存属性不是存储在会话中的闪存属性吗?使用闪存属性不是存储在会话中的闪存属性吗?听到这个消息很伤心。。我已经实现了方法(2),所以我想我必须保持这种方式。谢谢听到这个消息很难过。。我已经实现了方法(2),所以我想我必须保持这种方式。谢谢