前言:在项目中需要后台处理完数据之后post 表单提交跳转到对方的前台页面,不管是银联网银支付还是第三方网银支付。这个时候就需要使用ResponseBody方法模拟form表单提交。
代码:
代码语言:javascript复制 /**
* 网银支付
*/
@RequestMapping("/pay")
@ResponseBody
public String doPay(){
Map<String,String> map=new HashMap<String,String>();
map.put("name","name");
StringBuffer send = new StringBuffer();
send.append("<html><head><meta http-equiv="content-type" content="text/html;
charset=UTF-8"/><title> </title></head><body>");
send.append("<form name="AutoSubmitForm" action="").append(url).append("" method="post" >");
send.append(FormUtil.MaptoInput(map));
send.append("</form>");
send.append("<script type="text/javascript" >");
send.append("document.AutoSubmitForm.submit();");
send.append("</script>");
send.append("</body></html>");
return send.toString();
}
formUtil工具类
代码语言:javascript复制/**
*将MAP拼接成input标签
* @param map
* @return
*/
public static String MaptoInput(Map<String,String> map){
StringBuffer stringBuffer=new StringBuffer();
for (String key : map.keySet()) {
String value = map.get(key);
stringBuffer.append(toInput(key, value));
}
return stringBuffer.toString();
}
/**
* 转换为表单隐藏input域
*
* @param name
* @param value
* @return
*/
public static String toInput(String name, String value) {
return new StringBuffer("<input type="hidden" name="").append(name).append("" value="").append(value).append("" />").toString();
}