java注解验证接收参数 返回注解字段的错误
1。在controller接口方法接收参数加上
@Valid注解 并且在实体类参数后紧跟 BindingResult bindingresul
BindingResultMsgUtil工具类:
public class BindingRequestMsgUtil {
/**
* 输出bindingResult中的错误信息
* @param bindingResult
* @return
*/
public static ResultData bindingResultErrorMessage(BindingResult bindingResult,Class clz) {
ObjectError objectError = bindingResult.getAllErrors().get(0);
JSONObject resFiled1 = JsonUtil.objectToJsonObject(objectError);
String resFiled = resFiled1.get("field").toString();
Field declaredField = null;
try {
declaredField = clz.getDeclaredField(resFiled);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
MyFieldAnnotation declaredAnnotation = declaredField.getDeclaredAnnotation(MyFieldAnnotation.class);
String fieldNotes = "";
if (declaredAnnotation!=null){
fieldNotes = declaredAnnotation.fieldAnnotation();
}
return bindingResult != null && bindingResult.hasErrors()
? getStandardErrorJSONO(!StringUtils.isBlank(fieldNotes)
?fieldNotes+":"+bindingResult.getFieldError().getDefaultMessage():bindingResult.getFieldError().getDefaultMessage()) : null;
}
/**
* 获取一个规定好格式了的json字符串, 出错时的格式
* @param message 消息内容
* @return {"result":-1, "message":message}
*/
public static ResultData getStandardErrorJSONO(String message){
return getStandardErrorJSONO(message, null);
}
/**
* 获取一个规定好格式了的json字符串, 出错时的格式
* @param message 消息内容
* @param data data字段包含的数据
* @return {"result":-1, "message":message, "data":...}
*/
public static ResultData getStandardErrorJSONO(String message, Object data){
return getJSONO(0, message, data);
}
/**
* 获取一个规定好格式了的json字符串
* @param statusCode 状态码
* @param message 消息内容
* @param data data字段包含的数据
* @return {"result":statusCode, "message":message, "data":...}
*/
public static ResultData getJSONO(int statusCode, String message, Object data){
return ResultData.returnData(statusCode,message,data);
}
}
2.在实体类中添加注解@NotBlank 和自定义注解 @MyfieldAnnotation
自定义注解类:
@Retention(RetentionPolicy.RUNTIME)
@Target(value = {ElementType.FIELD})
public @interface MyFieldAnnotation {
String fieldAnnotation() default "";
}