1. 程式人生 > 實用技巧 >java註解驗證接收引數 返回註解欄位的錯誤

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