问题
后台ajax以PUT和DELETE方式向controller传参时controller匹配成功,且客户端XHR请求头中参数正确,但controller接收不到数据。
请求头:
后台输出:
解决
确保在web.xml中配置:
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filterclass>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在ajax中将type改为post,在data中添加_method:put(delete同理)
ajax:
$.ajax({
type: "POST",
url: basePath+"/student/changePassword",
data: {"account":account,"password":newPassword,"_method":"PUT"},
dataType: "json",
success: function (response) {
if(response.success){
alert("修改成功,请重新登录");
window.location.href = basePath+"/login.jsp";
}else{
alert(response.message);
}
},error : function (response){
alert("error");
}
});
controller:
@RequestMapping(value = "/changePassword",method = RequestMethod.PUT)
@ResponseBody
public Msg changePassword(User user) {
if(loginService.UpdateUser(user))
return Msg.success();
else
return Msg.fail().addMessage("error");
}
重启服务器,通过这种方法,本人问题解决