2015. 8. 26. 14:31ㆍJAVA/Spring(eGovFrame)
Spring에서 코드성을 체크하는 validation 없어서 생성하기로 맘먹고 구글링 시작....^ ^
package com.company.common.validation;
import java.lang.annotation.Documented;
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;@Documented
@Constraint(validatedBy=EnumConstraintValidator.class)
@Target( {ElementType.METHOD, ElementType.FIELD } )
@Retention(RetentionPolicy.RUNTIME)
public @interface Enum {String message() default "{message.validation.constraints.enum}";
Class<?>[] groups() default{};
Class<? extends Payload>[] payload() default {};
String[] values() default {};
}
위와 같이 생성을 하고 나중에 이를 사용하게 됩니다. (@Enum)
그리고 아래 소스는 Validation 체크 하는 로직을 담당하는 소스입니다.
package com.company.common.validation;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;import org.apache.commons.lang3.ArrayUtils;
public class EnumConstraintValidator implements ConstraintValidator<Enum, String> {
private String[] values;
@Override
public void initialize(Enum constraint) {
values = constraint.values();
}@Override
public boolean isValid(String value, ConstraintValidatorContext context) {if( null == value ) return false;
if( ArrayUtils.indexOf(values, value) > -1 ) return true;
return false;
}}
사용은 아래와 같이~~~~
public class PayHist {
@NotEmpty(groups={InsertProc.class})
@Length(max=1)
@Enum(values={"C","F"})
private String gubun; //서비스종류 : C-유료서비스 고객, F-무료서비스 고객...
values : 허용되는 값 목록
values와 해당 값을 비교하여 일치 하지 않을 경우 오류를 발생합니다.
또한 default message 설정은 이클립스 resources 최상위에다가....
ValidationMessages.properties 이름으로 생성하여 주면 properties를 사용하여 메시지 출력이 가능합니다..ㅡㅡ;;
message.validation.constraints.enum={values} 만 등록이 가능합니다.
다른데 넣으면 안되더라구요...
'JAVA > Spring(eGovFrame)' 카테고리의 다른 글
Eclipse Neon + gradle 설정 (0) | 2018.04.11 |
---|---|
화면에서 배열로 256개 이상의 Data 전송 시 IndexOutOfBoundsException오류 해결 방법 (0) | 2018.03.28 |
[ERROR] Ambiguous mapping found. (0) | 2015.08.26 |
@PropertySource를 이용하여 Property 등록 (0) | 2015.05.19 |
Spring4 Scheduling - Application (0) | 2015.05.19 |