Skip to content

Instantly share code, notes, and snippets.

@darbyluv2code
Created June 29, 2017 21:44
Show Gist options
  • Star 24 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save darbyluv2code/0275ddb6e70e085a10fd464e36a42739 to your computer and use it in GitHub Desktop.
Save darbyluv2code/0275ddb6e70e085a10fd464e36a42739 to your computer and use it in GitHub Desktop.
Spring MVC Validation - FAQ: Is it possible to integrate multiple validation string in one annotation?
package com.luv2code.springdemo.mvc.validation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.validation.Constraint;
import javax.validation.Payload;
@Constraint(validatedBy = CourseCodeConstraintValidator.class)
@Target( { ElementType.METHOD, ElementType.FIELD } )
@Retention(RetentionPolicy.RUNTIME)
public @interface CourseCode {
// define default course code
public String[] value() default {"LUV"};
// define default error message
public String message() default "must start with LUV";
// define default groups
public Class<?>[] groups() default {};
// define default payloads
public Class<? extends Payload>[] payload() default {};
}
package com.luv2code.springdemo.mvc.validation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class CourseCodeConstraintValidator
implements ConstraintValidator<CourseCode, String> {
private String[] coursePrefixes;
@Override
public void initialize(CourseCode theCourseCode) {
coursePrefixes = theCourseCode.value();
}
@Override
public boolean isValid(String theCode,
ConstraintValidatorContext theConstraintValidatorContext) {
boolean result = false;
if (theCode != null) {
//
// loop thru course prefixes
//
// check to see if code matches any of the course prefixes
//
for (String tempPrefix : coursePrefixes) {
result = theCode.startsWith(tempPrefix);
// if we found a match then break out of the loop
if (result) {
break;
}
}
}
else {
result = true;
}
return result;
}
}
package com.luv2code.springdemo.mvc;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import com.luv2code.springdemo.mvc.validation.CourseCode;
public class Customer {
private String firstName;
@NotNull(message="is required")
@Size(min=1, message="is required")
private String lastName;
@NotNull(message="is required")
@Min(value=0, message="must be greater than or equal to zero")
@Max(value=10, message="must be less than or equal to 10")
private Integer freePasses;
@Pattern(regexp="^[a-zA-Z0-9]{5}", message="only 5 chars/digits")
private String postalCode;
@CourseCode(value={"TOPS", "LUV"}, message="must start with TOPS or LUV")
private String courseCode;
public String getCourseCode() {
return courseCode;
}
public void setCourseCode(String courseCode) {
this.courseCode = courseCode;
}
public String getPostalCode() {
return postalCode;
}
public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
public Integer getFreePasses() {
return freePasses;
}
public void setFreePasses(Integer freePasses) {
this.freePasses = freePasses;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@Gadrawingz
Copy link

Great, Coding time went on like a Bomb 💣

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment