2016-05-23 10 views
0

私はJersey User Guide - bean-validationのステップを踏んで、以下をpom.xmlに追加します。制約ジャージ2の注釈が機能しない

<dependency> 
    <groupId>org.glassfish.jersey.ext</groupId> 
    <artifactId>jersey-bean-validation</artifactId> 
    <version>2.22.2</version> 
</dependency> 

は、それから私は、APIで

@Path("shows") 
public Response getShows(
     @NotNull @QueryParam("cid") Long cid, 
     @Valid @QueryParam("sort_by") @ValidSortBy(modalClass=Show.class) List<String> sortBy, 
     @QueryParam("limit") @DefaultValue("100") @Max(1000) int limit, 
     @Context UriInfo uriInfo 
) 

を制約アノテーションを使用しようとしたが、http://0.0.0.0:8080/api/v1/shows?limit=10001が呼び出されたときに@NotNullと@Maxの両方が動作しません。私はその理由を知らない、私は(「SORTBY」パラメータを使用)

@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy = ValidSortByValidator.class) 
public @interface ValidSortBy { 
    String message() default ""; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 

    Class<? extends BaseModal>[] modalClass() default {}; 
} 

public class ValidSortByValidator implements ConstraintValidator<ValidSortBy, List<String>> { 
    Class<? extends BaseModal> modalClass; 

    @Override 
    public void initialize(ValidSortBy annotation) { 
     System.out.println("aaaaaaaaa initialize"); 
     if (annotation.modalClass().length > 0) { 
      modalClass = annotation.modalClass()[0]; 
      System.out.println(modalClass.getTypeName()); 
     } 
    } 

    @Override 
    public boolean isValid(List<String> sortBy, ConstraintValidatorContext context) { 
     return false; 
    } 
} 

カスタム@ValidSortByと呼ばれるバリデータをしようとしたしかし、たとえ任意の出力はありません。

誰でも私に理由を教えてもらえますか?大いに感謝する!

ResourceConfigのは、このように初期化され、

final ResourceConfig resourceConfig = new ResourceConfig(); 

resourceConfig.packages([package names]); 
resourceConfig.property("jersey.config.server.wadl.disableWadl", true); 
resourceConfig.property(ServerProperties.BV_DISABLE_VALIDATE_ON_EXECUTABLE_OVERRIDE_CHECK, true); 

registerResourceConfig(resourceConfig); // register some error mappers 

ServletContainer servletContainer = new ServletContainer(resourceConfig); 
ServletHolder servletHolder = new ServletHolder(servletContainer); 

servletHolder.setInitOrder(1); 
servletHolder.setInitParameter("jersey.config.server.tracing", "ALL"); 

ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS); 
servletContextHandler.setSessionHandler(new SessionHandler()); 
servletContextHandler.setContextPath("/"); 

servletContextHandler.addServlet(servletHolder, "/*"); 

addServletFilters(servletContextHandler); 

return servletContextHandler; 

答えて

1

がweb.xmlをされていない私は手動でレジスタ有効で、それを解決しました。以下のコードはregisterResourceConfigに追加されました

resourceConfig.register(org.glassfish.jersey.server.validation.ValidationFeature.class); 
+0

この機能を無効にする場所は見つかりませんでしたが、手動で登録すると機能します。 – Cuero

関連する問題