首先,该需求就是前端穿过来的数据为HttpServletRequest类时,就不能进行@Validated判断了,所以,想对其进行判断得分二步,
其一,先将其转化为对应的实体类,
其二,通validator.validate()对其进行实体类中的注解判断。
代码:
public AjaxResult submit(HttpServletRequest request)
{
//此为将request转为String类,再将其转为实体类。
String body = DataConvertUtil.getRequestBody(request);
OkbApplyInfo okbApplyInfo = JSONUtil.toBean(body, OkbApplyInfo.class);
//这里是进行注解判断
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
Validator validator = vf.getValidator();
//若有不通过的属性值则存入set中
Set<ConstraintViolation<OkbApplyInfo>> set = validator.validate(okbApplyInfo);
if(set.size() > 0) {
for (ConstraintViolation<OkbApplyInfo> constraintViolation : set) {
return AjaxResult.error(constraintViolation.getMessage());
}
}
}其中有一个getRequestBody方法将request转为string类型。
/**
* request转string
* @param request
* @return
*/
public static String getRequestBody(HttpServletRequest request) {
StringBuilder builder = new StringBuilder();
InputStream inputStream = null;
try {
inputStream = request.getInputStream();
byte[] bytes = new byte[4096];
for(int n; (n=inputStream.read(bytes)) != -1;) {
builder.append(new String(bytes, 0, n));
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if(inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return builder.toString();
}版权声明:本文为qq_48964306原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。