Controller層代碼
@PostMapping(value = "/message") // http://localhost/message
ResponseEntity<String> post(@RequestBody ApiRequ apiRequ) {
ValidationResult result = ValidationUtils.validateEntity(apiRequ);
boolean isError = result.isHasErrors();
System.out.println(result.getErrorMsg().toString());
return new ResponseEntity<>(JSONObject.toJSONString(apiResp), HttpStatus.OK);
}
通過@RequsetBody接收到 apiRequ數據後,進行apiRequ內參數校驗。首先需要在apiRequ實體類中添加註解
@NotNull:不能为null,但可以为empty(""," “,” “)
@NotEmpty:不能为null,而且长度必须大于0 (” “,” ")
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0(“test”) 即:必须有实际字符
…可自行百度
上述三個註解需要引入的Maven依賴
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<!-- hibernate validator-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.0.Final</version>
</dependency>
參數校驗單元所需代碼
校驗結果實體類
public class ValidationResult implements Serializable{
private static final long serialVersionUID = 1L;
private boolean hasErrors;
private StringBuffer errorMsg;
}
校驗方法
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
/**
* 校验工具类
*
*/
public class ValidationUtils {
private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
public static <T> ValidationResult validateEntity(T obj) {
ValidationResult result = new ValidationResult();
Set<ConstraintViolation<T>> set = validator.validate(obj, Default.class);
if (set != null && set.size() != 0) {
result.setHasErrors(true);
StringBuffer errorMsg = new StringBuffer();
for (ConstraintViolation<T> cv : set) {
errorMsg.append(cv.getMessage());
}
result.setErrorMsg(errorMsg);
}
return result;
}
}
需要注意的是 apiRequ 實體類中的註解需要在@Null 後添加message,例如:
@NotBlank(message = "source_system can not be null or empty. ")
public String source_system;
這樣在該字段為空時,檢查結果才能報錯 'source_system can not be null or empty. ’
以上內容如有誤,感謝指正。