我正在为Spring的Angular前端开发一个容器应用程序。我有一个模拟支付网关,我使用POST方法提交Angular表单。
@RequestMapping(path = "/pay", method = RequestMethod.POST)
public String handleMockPayment(HttpServletRequest request, HttpServletResponse response) {
// APPEND MOCK PAYMENT STATUS CODE HERE (ResponseCode)
// something like,
// response.setParameter("ResponseCode", "1");
request.setAttribute(View.RESPONSE_STATUS_ATTRIBUTE, HttpStatus.TEMPORARY_REDIRECT); // to allow redirecting POST requests
return "redirect:/confirm";
}
在这个模拟控制器中,我需要在收到的原始数据(这是从Angular应用程序提交的表单)中附加一个额外的数据字段。此数据字段是模拟支付成功/失败代码。然后,该控制器将重定向到另一个控制器,这是我将用来处理来自支付服务器的回叫请求的真实控制器。
@RequestMapping(path = "/confirm", method = RequestMethod.POST)
public String paymentVerification(HttpServletRequest request, HttpServletResponse response) {
String orderId = request.getParameter("OrderID");
String responseCode = request.getParameter("ResponseCode"); // this is null
// do some stuff with orderId and responseCode
// ...
return "redirect:/booking";
}
orderId可从初始表单提交中设置。但我尝试的所有方法(使用Model,FlashParams,...)都不起作用(responseCode始终为null)。
如何在此附加此新参数?
模拟支付网关的任何替代方法也受到赞赏。我的目标是将响应代码附加到现有表单数据,或者在模拟控制器(handleMockPayment
)中创建具有必要模拟属性的新表单。提前谢谢。
答案 0 :(得分:0)
您可以使用.capitalize {text-transform:capitalize;} //$temp is all caps
来实现这一目标。
RedirectView
您可以使用路径变量在@RequestMapping(value = "test/{id}")
public RedirectView handleMockPayment (HttpServletRequest request, HttpServletResponse response) {
...
RedirectView rv = new RedirectView();
rv.setContextRelative(true);
rv.setUrl("/confirm/{responseCode}");
return rv;
}
中访问相同内容。