0

我在 RESTAPI 中工作。我们有带有抽象类型的 XML 模式。我们添加了@Mapped 注解来支持 json。

但是我们在执行 POST 操作时仍然会遇到 JAXB 绑定异常。但 GET 操作适用于 JSON。在这种情况下需要做什么?

我们正在使用 jettison 库。

对于 JAX-RS 实现,我们使用的是 RESTEasy 库。JAXB 生成的类驻留在包“net.com.schema.services”中。

@GET
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Path(ID_REGEX)
@RBAC(type = { CRUDEnum.READ }, capability = { "APICap" })
public JAXBElement<RESTOperationType> getCustomer(@PathParam("id") int customerId);

@POST
@Path(CUSTOMERS)
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Consumes({"application/xml","application/json"})
@RBAC(type = { CRUDEnum.CREATE }, capability = { "APICap" })
public JAXBElement<RESTOperationType> addCustomer(JAXBElement<RESTOperationType> restOprn)

我尝试了上面的代码,我得到了 POST 操作的绑定异常。我尝试了另一种方法。

@POST
@Path(CUSTOMERS)
@Produces({"application/xml","application/json"})
@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})
@Consumes({"application/xml","application/json"})
@RBAC(type = { CRUDEnum.CREATE }, capability = { "APICap" })
public JAXBElement<RESTOperationType> addCustomer(@Mapped(namespaceMap = {
@XmlNsMap(namespace = "services.schema.com.net ", jsonName = ""),
@XmlNsMap(namespace = "http://www.w3.org/2001/XMLSchema-instance", jsonName = "")
})JAXBElement<RESTOperationType> restOprn);

我在 addCustomer 方法中给出了 @Mapped 注释。现在,绑定异常已解决,并且在尝试从 JSON 输入读取数据时出现 NullPointer 异常。

4

0 回答 0