5

我有以下由 CXF 使用 JAX-RS 创建的响应:

{"ns1.CustomerInformationResponse":{
  "@xsi.type":"ns1:CustomerInformationResponse",
  "ns2.code":"SUCCESS",
  "ns1.customer":{
    "@xsi.type":"ns2:CustomerBaseDTO",
    "ns2.login":"login1"
  }
}}

这是我当前上下文配置的相关部分:

<jaxrs:server address="http://${host}:${port}/rest/customer">
  <jaxrs:serviceBeans>
    <ref bean="customerManagementServiceImpl" />
  </jaxrs:serviceBeans>
  <jaxrs:providers>
    <bean class="org.apache.cxf.jaxrs.provider.AegisJSONProvider" />
  </jaxrs:providers>
</jaxrs:server>

我希望收到与上述类似的响应,不带名称空间前缀(即 ns1、ns2 等...)。

我试图添加org.apache.cxf.interceptor.transform.TransformOutInterceptorcxf:outInterceptors,但它没有帮助。

4

1 回答 1

3

在您的 beans.xml 中,您可以指定 bean jsonProvider,如下所示。

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.AegisJSONProvider">
<property name="ignoreNamespaces" value="true" />
</bean>

现在在上下文配置中调用 jsonProvider,如下所示

<jaxrs:server address="http://${host}:${port}/rest/customer">
    <jaxrs:serviceBeans>
        <ref bean="customerManagementServiceImpl" />
    </jaxrs:serviceBeans>
    <jaxrs:providers>
        <ref bean ="jsonProvider" />
    </jaxrs:providers>
</jaxrs:server>
于 2012-11-09T10:53:37.930 回答