【发布时间】:2016-09-14 10:58:47
【问题描述】:
我尝试将Bean Validation 用于我的 REST API 和 Apache CXF。我阅读了Apache CXF Documentation,它适用于根资源,但不适用于sub resource locators。子资源的约束被忽略。
Maven 依赖项:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr</artifactId>
<version>1.1.0</version>
</dependency>
Java 代码:
@Named
@Path("test")
public class TestResource {
@Inject
private TestSubResource subResource;
@Path("sub")
public TestSubResource getSubResource() {
return subResource;
}
@GET
public void find(@NotNull @QueryParam("value") String value) {
}
}
@Named
public class TestSubResource {
@GET
public void find(@NotNull @QueryParam("value") String value) {
}
}
CXF 配置:
<bean id="validationProvider" class="org.apache.cxf.validation.BeanValidationProvider" />
<bean id="validationInInterceptor" class="org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor">
<property name="provider" ref="validationProvider" />
</bean>
<jaxrs:server address="/rest" id="test" staticSubresourceResolution="true">
<jaxrs:serviceBeans>
<ref bean="testResource" />
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<ref bean="validationInInterceptor" />
</jaxrs:inInterceptors>
</jaxrs:server>
我发现了以下问题:
但两者都是关于验证返回值而不是验证请求参数。
CXF in Karaf: how to configure bean validation on subresources (preferably using Blueprint)? 的问题类似,但关于 Karaf 和 Blueprint 并且不包含我的问题的解决方案。
【问题讨论】:
标签: java jax-rs cxf bean-validation