Spring @ Valid 의 두 가지 용법
7900 단어 수필
@Null null
@NotNull null
@AssertFalse false
@AssertTrue true
@DecimalMax(value)
@DecimalMin(value)
@Digits(integer,fraction) , integer, fraction
@Future
@Max(value)
@Min(value)
@Past
@Pattern(value)
@Size(max,min) min max
@Past ( )
@NotEmpty null ( 0、 0)
@NotBlank ( null、 0), @NotEmpty,@NotBlank
@Email Email, flag email
실체 류
public class AAA {
@Pattern(
regexp = "^(Draft|Active|Inactive)$",
message = "Please input valid action, only Draft|Active|Inactive " + "is allowed")
private String action;
@Pattern(regexp = "^.{0,100}$", message = "Product name only allows 1-100 characters")
private String productName;
@Pattern(regexp = "^.{0,500}$", message = "Product description only allows 1-500 characters")
private String description;
private String startDate;
private String endDate;
@Pattern(
regexp = "^(Day|Week|Month|Year)$",
message = "Please input valid termUnit, only Day|Week|Month|Year is " + "allowed")
private String termUnit;
@Pattern(regexp = "(\\d)?", message = "Please input valid termValue, termValue only allows 1 digits")
private String termValue;
@Pattern(
regexp = "^(\\d){0,18}$",
message = "Please input valid counterLimit, counterLimit only allows 1-18 " + "digits")
private String counterLimit;
@Pattern(regexp = "^(\\d){0,18}$", message = "Please input valid minLimit, minLimit only allows 1-18 digits")
private String minLimit;
@Pattern(regexp = "^(\\d){0,18}$", message = "Please input valid maxLimit, maxLimit only allows 1-18 digits")
private String maxLimit;
@Pattern(
regexp = "^(Day|Week|Month|Year|Times)$",
message = "Please input valid rolloverPeriodUnit, only " + "Day|Week|Month|Year|Times is allowed")
private String rolloverPeriodUnit;
@Pattern(
regexp = "^(\\d){0,3}$",
message = "Please input valid rolloverPeriodValue, rolloverPeriodValue only " + "allows 1-3 digits")
private String rolloverPeriodValue;
@Pattern(
regexp = "^(\\d){0,3}$",
message = "Please input valid maxNumberOfRollover, rolloverPeriodValue only " + "allows 1-3 digits")
private String maxNumberOfRollover;
@Pattern(
regexp = "^(.){0,18}$",
message = "Please input valid fundsLenderId, fundsLenderId only allows 1-18 " + "characters")
private String fundsLenderId;
@Pattern(
regexp = "^(\\d){0,3}$",
message = "Please input valid daysToWatch, daysToWatch only allows 1-3 " + "digits")
private String daysToWatch;
@Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToLost, daysToLost only allows 1-3 digits")
private String daysToSubstandard;
@Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToLost, daysToLost only allows 1-3 digits")
private String daysToLost;
@Pattern(regexp = "^(\\d){0,3}$", message = "Please input valid daysToBad, daysToBad only allows 1-3 digits")
private String daysToBad;
private String loanType;
@Pattern(regexp = "^(1000|5000)$", message = "Please input valid availableIdentityType, only 1000|5000 is allowed")
private String availableIdentityType;
@Pattern(
regexp = "^(.){0,10}$",
message =
"Please input valid currencyInMultiplesOf, currencyInMultiplesOf only allows 1-10 " + "characters")
private String currencyInMultiplesOf;
@Pattern(regexp = "^(.){0,10}$", message = "Please input valid strategyId, strategyId only allows 1-10 characters")
private String strategyId;
@Pattern(
regexp = "^(Weekly|Monthly|Maturity)$",
message = "Please input valid repaymentFrequency, only " + "Weekly|Monthly|Maturity is allowed")
private String repaymentFrequency;
@Pattern(
regexp = "^(\\d){0,3}$",
message = "Please input valid repaymentDay, repaymentDay only allows 1-3 " + "digits")
private String repaymentDay;
@Pattern(regexp = "^(F|G|M|S)$", message = "Please input valid repaymentScheduleType, only F|G|M|S is allowed")
private String repaymentScheduleType;
@Pattern(regexp = "^(Y|N)$", message = "Please input valid supportInstallment, only Y|N is allowed")
private String supportInstallment;
@Pattern(regexp = "^(Y|N)$", message = "Please input valid supportAutoRepayment, only Y|N is allowed")
private String supportAutoRepayment;
@Pattern(regexp = "^(Y|N)$", message = "Please input valid allowRepayInAdvance, only Y|N is allowed")
private String allowRepayInAdvance;
@Pattern(
regexp = "^(\\d){0,3}$",
message = "Please input valid statementDaysBeforDue, statementDaysBeforDue only allows 1-3" + " digits")
private String statementDaysBeforDue;
@Pattern(regexp = "^(Y|N)$", message = "Please input valid autoChangeRiskCategory, only Y|N is allowed")
private String autoChangeRiskCategory;
@Pattern(regexp = "^(Y|N)$", message = "Please input valid deductAccessFee, only Y|N is allowed")
private String deductAccessFee;
@Pattern(
regexp = "^(All|Same|Unlimited)$",
message = "Please input valid rejectWhenOverdue, only " + "All|Same|Unlimited is allowed")
private String rejectWhenOverdue;
}
첫 번 째 는 보통 controller 입구 에서 매개 변 수 를 받 습 니 다. @ Valid 는 다음 과 같 습 니 다.
@ApiOperation(value = "/v1/aa", notes = "Modify product info")
@PostMapping(value = "/v1/aa/{productId}")
@ResponseBody
public JsonObject modifyProduct(
@RequestBody @Valid ModifyProductInfoRequest request,
@PathVariable(name = "productId") Long productId,
@org.springframework.web.bind.annotation.RequestHeader(value = "X-Operator-ID", required = false)
String operatorID)
만약 이때 조건 을 만족 시 키 지 못 하면 잘못 보고 할 것 이다.
두 번 째: 업무 에서 검증 하려 면 로그 나 오류 원인 을 기록 하거나 다른 작업 을 하 는 데 편리 하 다 면 해당 서비스 에 다음 과 같은 빈 공간 실현 방법 을 만 들 수 있 습 니 다.
service A{
public void validateRequest(@Valid AAA requestData) {}
}
service b{
@Resource
service A a;
public void doSomeThing( AAA requestData) {
.....
try {
//
a.validateRequest(requestData);
} catch (ConstraintViolationException e) {
Set> constraintViolations = e.getConstraintViolations();
for (ConstraintViolation> violation : constraintViolations) {
String path = violation.getPropertyPath().toString();
throw new Exception("xxxxxxxx");
}
}
....
}
}
이렇게 처리 하려 면 반드시 대상. 방법 을 통 해 호출 해 야 합 니 다. a. vaidateRequest (requestData) 와 유사 합 니 다.그렇지 않 으 면 Spring Validation 검 사 를 촉진 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 디지털 처리 클래스 상용 방법 집합오늘 은 자바 의 디지털 처리 류 와 관련 된 내용 을 배 웠 습 니 다. 그 중에서 흔히 볼 수 있 는 방법 이 많 습 니 다. DecimalFormat 의 format () 과 apply Format () 방법 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.