0
我嘗試使用JAX-B對象作爲參數來驗證JAX-RS請求。使用JAX-B對象作爲參數驗證JAX-RS請求
代碼:
JAX-B模型類:
@XmlRootElement(namespace = "http://www.test.com/test")
@XmlAccessorType(value = XmlAccessType.FIELD)
public class TestModel {
@XmlElement(required = true)
private String id;
@XmlElement
private String name;
}
JAX-RS資源類:
@Path("test")
public class TestResource {
@POST
@Consumes({ MediaType.APPLICATION_XML, MediaType.TEXT_XML })
public void create(TestModel testModel) {
// some code
}
}
CXF配置:
<jaxrs:server address="/rest" id="test" staticSubresourceResolution="true">
<jaxrs:serviceBeans>
<ref bean="testResource" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.JAXBElementProvider" />
</jaxrs:providers>
</jaxrs:server>
例子:
請求正文:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:testModel xmlns:ns2="http://www.test.com/test">
<name>testName</name>
</ns2:testModel>
的id
丟失,所以我應該得到一個HTTP status 400,但我得到HTTP status 204。
研究:
- 使用JAXRS:schemaLocations元件
[...]
- 配置提供RS單獨
[...]
- 使用SchemaValidation註釋
,但我不XSD文件(僅JAX-B類) 。
有沒有辦法驗證沒有XSD文件的JAX-B對象?
如果您使用CXF 3.x中,它支持[豆驗證](http://cxf.apache.org/docs/jax-rs.html#JAX-RS-BeanValidation)。太糟糕的文檔鏈接是一個死鏈接。我不使用CXF,所以我無法幫助你配置這個 –