현재 RESTful JAX를 실험 중이며 사용자 정의 입력의 유효성을 검사하고 싶습니다. 일반적으로 정규 표현은 괜찮지 만 좀 더 포괄적 인 검사 (~ 10 개의 다른 정규식 패턴)가 필요합니다. jaxrs 유효성 검사를 검색 할 때 this page을 찾았습니다. 나는 그것이 "초안"이라고 말했지만 나는 그것을 시도해 볼 것이라고 생각했다.JAX-RS 커스텀 pathparam 유효성 검사기
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = FooBarValidator.class)
public @interface FooBarParam
{
}
유효성 검사기는 다음과 같습니다 :
@Provider
public class FooBarValidator
implements ConstraintValidator<FooBar, Long>
{
@Override
public void initialize(FooBar constraintAnnotation)
{
}
@Override
public boolean isValid(Long value, ConstraintValidatorContext context)
{
// validation goes here, this is a test validation
return (value > 50);
}
}
웹 서비스는 다음과 같습니다
@javax.ejb.Stateless
@Path("test")
public class testRS
{
@GET
@Path("foobar/{fooBar: [0-9]+}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.TEXT_PLAIN)
public String testService(@FooBar @PathParam("fooBar") Long fooBar)
{
return "tested with: " + fooBar;
}
}
을하지만 호출하는 경우
는이 같은 내 매개 변수의 주석을 썼다 내 웹 서비스 "http : // localhost : 8080/jaxtest/rest/test/foobar/11"을 사용하여 내 브라우저에서 웹 서비스 e가 호출되고 "with with tested : 11"이라고 표시됩니다. 유효성 검사기가 호출되지 않는다는 점을 제외하고는 웹 서비스가 정상적으로 작동합니다.유효성 검사기 클래스와 주석 인터페이스에 중단 점을 설정하려고 시도했지만 아무 것도 충돌하지 않았습니다.
참조 된 문서의 '초안'헤더 때문에 내가 할 수없는 일을하고 있다는 몰래 의심 스럽습니다. 그래서 내가 뭔가 잘못하고 있거나 대안이 있다면, 나는 그것을 듣게되어 기쁩니다.
당신은 콩 검증 (JSR 303) http://docs.jboss.org/seam/3/rest/latest/reference/en-US/html와 esily JAX-RS를 통합 할 수 /rest.validation.html –