The request sent by the client was syntactically incorrect.报错

错误原因:

public void test(HttpServletResponse response,
                  @Valid ForgetPwdVO forgetPwdVO,Integer type, BindingResult validResult){
}

ForgetPwdVO 的bean中有如下参数:

@NotNull(message = "273")
@Pattern(regexp = "^1\\d{10}$", message = "107")
private String phone;

在controller接口参数有forgetPwdVO对象和type普通参数,当phone参数传错时就会报错:

HTTP Status 400 -

The request sent by the client was syntactically incorrect.意思:由客户端发送的请求是语法上是不正确的。但还是不明白哪里出了问题,

经过了解在spring mvc数据绑定的时候一定要主意Controller方法中的参数名和传的参数名字是否一致或者按照绑定的规范来写,如果不一致,可能会报如下错误:The request sent by the client was syntactically incorrect.实际就是spring mvc无法实现数据绑定。

代码经过修改如下: 

第一种解决办法:将普通参数写到bean类中。

public void test(HttpServletResponse response,
                  @Valid ForgetPwdVO forgetPwdVO, BindingResult validResult){
}

ForgetPwdVO 的bean中有如下参数:

@NotNull(message = "273")
@Pattern(regexp = "^1\\d{10}$", message = "107")
private String phone;
private Integer type;

第二种解决办法:普通参数放到普通参数前面。

public void test(HttpServletResponse response,
                  
Integer type,@Valid ForgetPwdVO forgetPwdVO, BindingResult validResult){}

这样当phone参数传送错误时服务器不再报400错误。

总结:出现400错误多半是spring MVC传的参数类型错误导致。

详细排查错误:https://blog.csdn.net/lw1242189467/article/details/80048407。

绑定参数规范:https://www.cnblogs.com/ysocean/p/7425861.html


猜你喜欢

转载自blog.csdn.net/xp_lx1/article/details/80982956