Как настроить аннотацию проверки на основе некоторых критериев, используя проверку javax с реализацией проверки Hibernate.
Пример кода:
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import org.springframework.stereotype.Component;
import com.kp.mechanic.workshop.validator.beans.GeoLocation;
import com.kp.mechanic.workshop.validator.beans.Practioner;
import com.kp.mechanic.workshop.validator.beans.PractionerAddress;
@Component("validator")
public class ValidatorService {
private Validator validator;
private ValidatorFactory factory;
public void execute() {
System.out.println(" Validation framework starts");
try {
// < DAO call to get GEO Location is AUS >
//Construct Geo Location:
GeoLocation geoLocation= new GeoLocation();
geoLocation.setStrtAddrLine1("walker street ");
geoLocation.setOptionalAddrLine2("bonitoa road");
geoLocation.setZipCD("SY");
factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
Set<ConstraintViolation<Object>> resultSet= validator.validate(geoLocation);
for (ConstraintViolation<Object> object : resultSet) {
System.out.println(object.getPropertyPath() + ": " + object.getMessage());
}
}
catch(Exception e) {
System.out.println("Message "+e);
e.printStackTrace();
}
}
}
См. Приведенный ниже POJO с использованием Lombok.
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class GeoLocation {
//City name
@NotNull(message="warn:Missing data")
@Size(min =3 , max =50, message = "warn:Invalid length")
@Pattern(regexp = "^a-zA-Z",message = "warn:Invalid characters found in text",flags=Pattern.Flag.CASE_INSENSITIVE)
private String cityNM;
//State Code
@NotNull(message="warn:Missing data")
@Size(min =2 , max =2, message = "warn:Invalid Length")
@Pattern(regexp = "^[a-zA-Z]",message = "warn:Invalid characters found in text",flags=Pattern.Flag.CASE_INSENSITIVE)
private String stateCD;
//zip code
@NotNull(message="warn:Missing data")
@Size(min =5 , max =9, message = "warn:Invalid Length")
@Pattern(regexp = "^[0-9]",message = "warn:Invalid characters found in text")
private String zipCD;
}
Используя приведенные выше записи pom.
Приведенный выше код работает нормально для приведенных ниже правил проверки для GEO Location: "AUS".
> CityName : not null , minimum 3 and maximum 50 characters, only alphabets.
> State Code : not null , maximum 2 , only alphabets.
> Zip Code : not null , minimum 5 and maximum 9, only digits.
Где как для «IND», я хотел бы изменить приведенные ниже правила проверки как таковые.
> CityName : not null , minimum 10 and maximum 15 characters, only alphabets
> State Code : not null , maximum 6, only alphabets.
> Zip Code : not null , maximum 10, only digits
Можете ли вы дать какое-либо предложение изменить правила проверки на основе типа географического местоположения IND?
Это своего рода пользовательская аннотация, есть ли лучший способ повторно использовать аннотацию без записи java logi c в пользовательском классе аннотаций? Пользовательская аннотация для кросс-полей