자바 사용자 정의 주석 이 앞 배경 매개 변수 검 사 를 실현 하 는 인 스 턴 스
@Constraint(validatedBy = xxxx.class)
다음은 제 가 만 든 자바 사용자 정의 주석 이 앞 배경 매개 변수 검 사 를 실현 하 는 코드 예제 입 니 다.
이것 에 관심 이 있 는 사람 은 잘 보고 잘 배 워 보 세 요.
package sonn.sonnannotation;
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.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import javax.validation.Payload;
import sonn.util.StringUtill;
/**
* @ClassName: IsValidString
* @Description: ,
* @author
* @date 2016-7-25 8:22:58
* @version 1.0
*/
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = IsValidString.ValidStringChecker.class)
@Documented
public @interface IsValidString
{
String message() default "The string is invalid.";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default{};
class ValidStringChecker implements ConstraintValidator<IsValidString,String>
{
@Override
public void initialize(IsValidString arg0)
{
}
@Override
public boolean isValid(String strValue, ConstraintValidatorContext context)
{
if(StringUtill.isStringEmpty(strValue))
{
return true;
}
if(strValue.contains("<"))
{
return false;
}
return true;
}
}
}
상기 코드 는@Constraint(vaidatedBy=IsValidString.ValidStringChecker.class)를 통 해 주해 의 방법 논 리 를 제한 합 니 다.이 주해 류 의 이름 은 ValidStringChecker 의 내부 클래스 입 니 다.이 내부 클래스 는 ConstraintValidator
공식 문 서 는 이렇게 설명 합 니 다.
javax.validation
Interface ConstraintValidator•------------------------------------------------public interface ConstraintValidatorDefines the logic to validate a given constraint A for a given object type T. Implementations must comply to the following restriction:•T must resolve to a non parameterized type•or generic parameters of T must be unbounded wildcard typesThe annotation SupportedValidationTarget can be put on a ConstraintValidator implementation to mark it as supporting cross-parameter constraints. Check out SupportedValidationTarget and Constraint for more information.실 현 된 isValid 방법 은 바로 이 인터페이스의 검사 방법 입 니 다.효 과 를 시험 해 보고 검사 할 실체 필드 에 주 해 를 추가 합 니 다. 글 페이지 를 작성 하고 글 제목 에'<'를 추가 한 다음 제출 합 니 다. 제출 실패,500 오 류 를 보고,설명 주해 가 유효 합 니 다: 하지만 문제 가 있 습 니 다.제 블 로그 사 이 트 는 오류 메 시 지 를 직접 출력 할 수 없습니다.error 페이지 를 만들어 야 합 니까?이것 은 간단 합 니 다.웹.xml 에 error 페이지 경 로 를 추가 한 다음 페이지 를 만 들 면 됩 니 다. 500 /error.jsp 먼저 기본 개념 을 소개 한다.1.자바 는@interface xx{}로 주 해 를 정의 합 니 다.이 물건 을 주석 하 는 것 은 사실 신비 하지 않 습 니 다.표시 일 뿐 입 니 다.프로그램 이 표시 처 에 실행 되면 해당 하 는 논 리 를 수행 할 뿐 입 니 다.주해 자체 가 하나의 유형 이다.2.주 해 는 정의 할 때 일부 주 해 를 표시 하면 특정한 의 미 를 나 타 낼 수 있다.@Retention(Retention Policy.SOURCE)//주 해 는 원본 코드 에 만 존재 하 며,class 바이트 파일 에는 포함 되 지 않 습 니 다.@Retention(RetentionPolicy.CLASS)//기본 보존 정책 입 니 다.주 해 는 class 바이트 파일 에 존재 하지만 실행 중 얻 을 수 없습니다.@Retention(Retention Policy.RUNTIME)//주 해 는 class 바이트 파일 에 존재 하 며,실행 중 반사 로 가 져 올 수 있 습 니 다.(RUNTIME 은 반사 적 으로 얻 을 수 있 음 을 의미 하기 때문에 주의해 야 한다)@Target(ElementType.TYPE)//인터페이스,클래스,매 거 진,주석@Target(ElementType.FIELD)//필드,매 거 진 상수@Target(ElementType.METHOD)//방법@Target(ElementType.PARAMETER)//방법 매개 변수@Target(ElementType.CONSTRUCTOR)//구조 함수@Target(ElementType.LOCAL_VARIABLE)//부분 변수@Target(ElementType.ANNOTATION_TYPE)//주석@Target(ElementType.PACKAGE)//패키지주 해 를 정의 할 때@Taget(xx)과@Retention(Retention Policy.RUNTIME)을 추가 하 는 방법 이 있 습 니 다.그러나 주해 에 방법 을 쓰 지 않 고 실행 할 때 반사 체 제 를 통 해 주 해 를 얻 은 다음 에 스스로 해당 하 는 논리(주해 해석 기)를 쓰 는 방법 이 있 습 니 다.대개 비슷 한 문법 입 니 다. import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Documented @Inherited @Target({ ElementType.FIELD, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface Validate { public int min() default 1; public int max() default 10; public boolean isNotNull() default true; }이후 운행 시 반사 로 주 해 를 얻 고 구체 적 으로 는 말 하지 않 는 다.예전 에 인터넷 에서 이 분야 의 기술 문장 을 찾 은 것 은 모두 이런 것 이 었 고 그 당시 의 저 에 게 큰 곤 혹 스 러 움 을 주 었 습 니 다.내 가 원 하 는 게 아 닌 것 같 아서.이상 의 자바 사용자 정의 주석 이 앞 배경 매개 변수 검 사 를 실현 하 는 인 스 턴 스 는 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.