Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

14 Commits

Repository files navigation

Spring Validations

In this example I have used default validations as well as custom validations

Default Validations

  • @NotEmpty
  • @Size
  • @NotNull
  • @DecimalMin
  • @Digits
  • etc..
@NotEmpty(message = "{account.name.notempty}")
@Size(min = 2,max = 50,message = "{account.name.size}")
privateStringaccountName;
@NotEmpty(message = "{account.type.notempty}")
@Size(min = 2,max = 50,message = "{account.type.size}")
privateStringaccountType;
@NotNull(message = "{account.amount.notnull}")
@DecimalMin(value = "100.00",inclusive = false,message = "{account.amount.min}")
@Digits(integer=3, fraction=2,message = "{account.amount.decimal}" )
privateBigDecimalamount;

Custom Validation

I have created custom validation like @AlreadyExists, it will check account name is already exists or not in database.

@AlreadyExists(message = "{alreadyexists.account}")
publicclassAccount{
...
}
@Documented@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE})
@Constraint(validatedBy = AlreadyExistsValidator.class)
public @interface AlreadyExists {
Stringmessage() default"Invalid value";
Class<?>[] groups() default {};
Class<? extendsPayload>[] payload() default {};
}
publicclassAlreadyExistsValidatorimplementsConstraintValidator<AlreadyExists, Account>{
@AutowiredprivateJdbcAccountRepositoryrepository;
@OverridepublicbooleanisValid(AccountinputValue, ConstraintValidatorContextcontext) {
log.debug("| Request Time - Start - isValid() " + LocalTime.now());
booleanflag = true;
if(inputValue.getId() == null) {
flag = isValidObjectForSave(inputValue, context);
}else {
flag = isValidObjectForUpdate(inputValue, context);
}
returnflag;
}
protectedbooleanisValidObjectForSave(AccountinputValue,ConstraintValidatorContextcontext) {
booleanstatusFlag = true; //Default SuccessList<Account> list = repository.findByName(inputValue.getAccountName());
if(list.size() > 0)
statusFlag = false; //FailurereturnstatusFlag;
}
protectedbooleanisValidObjectForUpdate(AccountinputValue,ConstraintValidatorContextcontext) {
booleanstatusFlag = true; //Default SuccessList<Account> list = repository.findByName(inputValue.getAccountName());
intcounter = 0;
for(Accountaccount:list) {
if (account.getId() != account.getId()) {
counter++;
}
}
if (counter > 0)
statusFlag = false;
returnstatusFlag;
} }

ValidationMessages.properties

account.name.notempty = Account Name is not empty
account.name.size = Account Name accepts at least {min} and at most {max} characters
account.type.notempty = Account Type is not empty
account.type.size = Account Type accepts at least {min} and at most {max} characters
account.amount.notnull = Amount is not empty
account.amount.min = Account Minimum balance should be 100.entered value ${validatedValue}
account.amount.decimal	= Amount should be in 2 decimal values.entered value ${validatedValue}
alreadyexists.account	= Account name already exists.entered value '${validatedValue.accountName}'account.id.min = Please provide the valid account id, entered value ${validatedValue}

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages