首先: springMVC对于命名不规范的参数是有容忍度的。
建议参数名严格按照规范编写-同时注意getter,setter方法(这里面的坑很深,感兴趣的可以进去走走)
这里示例后端需要接收的参数名为 'ID' , 'Type' ;
若是get请求,则直接封装为 " url?ID=123&Type=ACCEPT"
但是这里需要使用POST请求, 尝试直接使用 <form action="url" method="POST"> 再通过submit方法进行访问,
结果type接收不到,尝试了@JsonProperty这个注解,但是ID接收不到了。很奇怪。更奇怪的是我使用postman来测试却OK。
这就让我十分不解,怀疑是因为form表单提交时数据格式发生了变化,于是继续找资料.
方案一: 用JavaScript的方式让form表单的数据以Json格式提交数据,代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<title>自动化接口测试/POST请求</title>
<script type="text/javascript" src="./jquery-3.3.1.min.js"></script>
</head>
<body>
<button onclick="doPost()">POST请求</button>
<form>
<input type="text" name="ID">
<input type="text" name="Type">
<input type="submit" value="登录" />
</form>
</body>
<script type="text/javascript">
$(':submit').on('click',function(){
$.ajax({
url:"url", //TODO:修改这个url
async : true,
type:"POST",
data:$('form').serializeArray(),
contentType:"application/x-www-form-urlencoded",
success:function(){
console.log("成功");
}
});
});
function doPost(){
$.ajax({
url : "url", //TODO:修改这个url
async : true,
type : "POST",
data : $('form').serializeArray(),
contentType:"application/x-www-form-urlencoded",
success: function ( data ) {
alert("1111");
alert(data);
console.log(data);
},
error: function (data) {
alert("2222");
alert(data);
console.log(data);
}
});
}
</script>
</html>
测试结果OK; 后端SpringMVC 控制层(controller)成功接收到数据