我使用的是1.9澤西與驗證的支持,並具有類似資源的方法:新澤西1.9和先進的驗證
@POST
public Response createNewOozieTransformation(
@FormDataParam("info") SomeInfo info,
@FormDataParam("zippedResources") InputStream zippedResources) {
...
Collection<Resource> resources = resourcesService.extractResources(zippedResources);
//This needs to be validated
RequestWithResources requestWithResources = new RequestWithResources(info, resources);
someService.handle(requestWithResources);
}
我使用Bean驗證了SomeInfo
,它的一些外觀和數據例如@NotNull
和這一切工作正常。我想驗證RequestWithResouces
以及但我不知道如何。請注意,SomeInfo
包含有關所需資源的動態信息,因此我需要整個RequestWithResources
才能執行驗證。
我RequestWithResources
有一流水平的定製@ValidateMandatoryResources
註釋:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Constraint(validatedBy = ValidateMandatoryResources.ResourcesValidator.class)
public @interface ValidateMandatoryResources {
...
class ResourcesValidator implements ConstraintValidator<ValidateMandatoryResources, RequestWithResources> {
...
}
}
我已經沒有運氣嘗試:
創建了創建
RequestWithResources
標註與@ValidateOnExecution
的方法。 - 驗證沒有被引用由於
someService
注入我試圖註釋ReqeuestWithResources
參數在它的handle(...)
與@Valid
控制器 - 驗證未執行@Inject
Validator
到控制器類上運行validate(requestWithResources)
它。 - 死因爲不能注入Validator
如果您啓用CDI,您的第三個選項將起作用。這取決於你的運行時間env CDI可用性,你沒有提到。 – Franck
不幸的是,我沒有啓用CDI容器。我希望澤西使用的Validator可以通過HK2獲得。澤西獲得用於資源方法參數驗證的Validator的任何見解? –
看來澤西島正在使用hibernate impl for BV。您可以通過以下方式創建默認的ValidatorFactory:ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator();但我不知道如何獲得由澤西 – Franck