当前位置: 首页 > 知识库问答 >
问题:

如何在CXF(wadl2java)中覆盖根类型上的camelcase

曾嘉言
2023-03-14

我在wadl中定义了一个类型,如下所示(这来自wadl2java maven插件生成的ModelCriteria.java):

null

<complexType name="ModelCriteria">
  <complexContent>
    <extension base="{http://www.example.com/services/v2}AbstractSearchCriteria">
      <sequence>
        <element name="modelNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
        <element name="hasAssociation" type="{http://www.w3.org/2001/XMLSchema}boolean" minOccurs="0"/>
        <element name="manufacturerName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
        <element name="type" type="{http://www.example.com/services/v2}ModelType" minOccurs="0"/>
      </sequence>
    </extension>
  </complexContent>
</complexType>

null

外出拦截器记录以下内容:

负载:<?xml version=“1.0”encoding=“UTF-8”standalone=“yes”?> modelnumber

在这种情况下,由于我正在使用的服务(我无法将其修复为不关心大小写),我需要根类型是ModelCriterial,而不是ModelCriteria。有什么方法可以解决这个问题,降低代码的复杂度吗?下面是我的例子:

ModelCriteria代码段:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ModelCriteria", propOrder = {
    "modelNumber",
    "hasAssociation",
    "manufacturerName",
    "type"
})
@XmlRootElement
public class ModelCriteria
    extends AbstractSearchCriteria
{

ModelCriteriaTest代码段:

    JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
    bean.setAddress("https://example.com/services/v2/rest");
    bean.setUsername(...);
    bean.setPassword(...);
    bean.setResourceClass(ModelRestService.class);

    bean.getOutInterceptors().add( new org.apache.cxf.interceptor.LoggingOutInterceptor() );

    ModelRestService model = bean.create(ModelRestService.class);

    ModelCriteria mc = oFact.createModelCriteria();
    mc.setModelNumber("CFK");

    FindModelResult fmResult = model.findByCriteria(mc);

另外一点是,即使package-info.java存在,我仍然必须将@XMLRootElement添加到ModelCriteria中,以使其能够传输。

WADL代码段:

<application 
         xmlns="http://wadl.dev.java.net/2009/02" 
         xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <grammars>
     <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                xmlns:tns="http://www.example.com/services/v2" 
                attributeFormDefault="unqualified" 
                elementFormDefault="qualified"            
                targetNamespace="http://www.example.com/services/v2">

       ... other types ... 

       <xs:element name="ModelCriteria" type="tns:ModelCriteria"/> 
     </xs:schema>
   </grammars>
   <resources> ... </resources>
 </application> 

共有1个答案

冉子石
2023-03-14

将@XmlRootElement更改为@XmlRootElement(名称=“ModelCriteria”)

 类似资料:
  • 问题内容: 我正在开发一些基于Web服务的应用程序,并且对Apache CXF解组有疑问。在我们的项目中,我们使用CXF 2.4.1版本。 当某些SOAP请求不正确时(例如,某些字段是文本而不是数字),CXF会抛出标准的SOAPFaultException,并且SOAP响应将使用以下标准字段构建: 项目要求说,如果发生任何故障,系统需要以其他格式响应,例如: 所以问题是:如何以某种方式覆盖此错误处

  • 问题内容: 我正在尝试从open jdk更改某些类,所以我正在创建与open jdk类相同的包结构,并且正在使用netbeans更改类。当我在构建项目时,如果覆盖类中出现问题,我会收到错误消息。如果成功构建了我的项目,则应用程序似乎不考虑我对类的更改,而是使用打开的jdk类。知道我该如何使用我的类而不是openjdk的类? 例: 如果我在项目中创建类 _sun.net.www.protocol.h

  • 问题内容: 我有一个结构如下的文件: 我想在命令行中覆盖。 对于其他值为简单类型(字符串,数字)的配置键,我可以使用进行覆盖,并且效果很好。 但是,我似乎找不到为 list 做到这一点的方法。在上面的示例中,我尝试将其设置为如下所示:,但是我得到了一个例外,即键值是字符串,而不是列表。 有没有一种方法可以通知类型安全配置库此值是一个列表? 问题答案: 为此,在1.0.1版中实现了另一种语法:

  • 问题内容: 我想组成另一种类型的类型,但用假冒替换字段之一(这是接口值)。我遇到的问题是正在使用基础字段,因此我似乎无法覆盖该字段。 我在这里演示了这个问题:https : //play.golang.org/p/lHGnyjzIS-Y 为什么打印?我要打印。 谢谢。 问题答案: 通过,您正在调用 提升的 方法,方法接收者将是哪种类型,并调用何处是哪种类型,这就是它打印的原因。 在Go中有嵌入,但

  • 问题内容: 我目前在glassfish v2.1中使用基于身份的身份验证来登录用户,并且工作正常。我想切换到该网站,并希望能够获得最初请求的URL(即在重定向到登录页面之前),并在我的程序化登录代码中使用它,以便在身份验证后将用户重定向回请求的页面。 我已经看过源代码-在我的情况下,它是(catalina代码库),它将初始请求保存在会话中的对象中,但是该会话不是,因此没有直接方法可以访问它。 还是

  • 问题内容: 未正确探讨此问题。真正的问题在于。 原始问题中的第一个代码粘贴将产生预期的结果。但是,仍然需要注意。请参阅以下示例: 是 不 一样的 也就是说,不会自动调用与User对象关联的方法。 实际上 ,如果在模型上被覆盖,将生成以下描述。 摘要 这一切对我来说似乎很愚蠢。这似乎是在告诉我在指定类型时实际上并没有在调用。有人可以解释这里的实际情况吗? 任何可以帮助我解决这个问题的精灵都可以回答我