특정 URL에 대한 요청을 처리하는 메소드가 경로 매개 변수에서 채워지는 매개 변수를 허용하는 다른 사용자가 작성한 REST API가 있습니다.dropwizard에서 사용자 정의 유효성 검사기를 사용하려면 어떻게해야합니까?
이 편지를 작성한 사람은 DropWizard를 사용했으며 이전에 작업 한 경험이 없습니다. studentId 필드를 db의 값과 비교하여 유효성을 검사하는 작업이 있습니다. 이것은 매우 간단하지만 사용자 정의 유효성 검사기를 사용하여 수행하도록 지시 받았습니다. 나는, 내가 같이 유효성 검사를 실행할 싶었 필드에 주석을 추가 한이 후
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = StudentIdValidator.StudentIdValidation.class)
public @interface StudentIdValidator {
String message() default "{Invalid Id}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
class StudentIdValidation implements ConstraintValidator<StudentIdValidator, String> {
@Override
public void initialize(StudentIdValidator constraintAnnotation) {
System.out.println("Annotation initialize !!!!!!!!!");
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// TODO Auto-generated method stub
System.out.println("Annotation called");
return false;
}
}
}
, 많은 발굴이 같은 주석을 썼다 그러나 후에 작성 주석 꽤 새로운 오전
public Response processFile(@FormDataParam("sourceFile") InputStream aStream, @PathParam("classid") String classId, @StudentIdValidator @PathParam("studentid") String studentId, @Context HttpServletRequest httpRequest)
이제 문제는 내가 코드를 실행/디버깅 할 때 ...이 유효성 검사기가 호출되지 않고 studentId 유효성 검사 클래스 내에서 studentId의 값을 얻는 방법을 알지 못한다는 것입니다. 그래서 좀 더 파고 응용 프로그램 파일
class MyApplication extends Application<MyConfiguration> {
........
@Override
public void run(MyConfiguration myConfiguration, Environment currentEnvironment) {
currentEnvironment.jersey().register(StudentIdValidator.class);
}
내 지혜의 끝에서 그대로 오전에이 추가되었습니다. 어떤 도움도 매우 감사 할 것입니다. 잘못된 형식에 대해 죄송합니다.
및 검증에 대한 몇 가지 추가 정보를 어떻게 여기 활성화 : http://stackoverflow.com/questions/37463570/dropwizard-validate-a-field-only -on-post/37480676 # 37480676 – pandaadb
답장을 보내 주셔서 감사합니다. 이 경고가 발생했습니다. org.glassfish.jersey.internal.inject.Providers가 있습니다. 공급자 com.shuvro.application.validator.StudentIdValidatior SERIES 런타임에 등록 된 StudentIdValidation은 SERVER 런타임에 적용 가능한 공급자 인터페이스를 구현하지 않습니다. 제약 조건 설정 문제 때문에 공급자 com.shuvro.application.validator.StudentIdValidator.StudentIdValidatior $ StudentIdValidation이 무시됩니다. –
안녕하세요 - 유효성 검사기를 등록하지 않아도됩니다. 저지는 저지 요소가 아니므로 저지는 어떻게해야할지 모릅니다. – pandaadb