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 "";
}