gpt4 book ai didi

java - 从 ant 调用 wsimport 生成的类中去掉 JAXBElement

转载 作者:IT老高 更新时间:2023-10-28 20:28:14 26 4
gpt4 key购买 nike

我有以下问题:我正在使用 wsimport ant 任务来创建 Web 服务客户端(用于 salesforce.com)。一切正常,但生成的类都对所有 bean 属性使用这个奇怪的 JAXBElement 类。

例如:

public void setLastName(JAXBElement<String> value) {
this.lastName = ((JAXBElement<String> ) value);
}

public JAXBElement<String> getCountry() {
return country;
}

我不想将所有类都包装在 JAXBElement 中,而是希望使用像 setLastName(String newLastName) 这样的简单方法。这就是我调用 wsimport 任务的方式。

<wsimport debug="false" verbose="false" keep="${keep}" 
extension="${extension}" destdir="${tmp.metro}"
wsdl="${licensing.wsdl}"
sourcedestdir="${licensingws.generated.src}"

>

<binding dir="${basedir}/etc" includes="${client.binding}"
/>
<arg value="-B-XautoNameResolution" />

</wsimport>

任务是这样定义的:

有人知道我必须设置什么以便 wsimport 以我想要的方式生成类吗?提前非常感谢!!!

最佳答案

在生成的 bean 中使用 JAXBElement 包装器的原因可能是 WSDL 声明该字段是可选的和可空的。为了区分“不存在”和“存在,但为空”,不能直接使用字符串类型,因为这两种情况下的字符串都是空的。

如果不需要区分这两种情况,可以configure the code generator改为使用 String 类型。我不能 100% 确定如何使用 ant 任务执行此操作,但您可能会在 ant 任务文档中找到相关信息。

关于java - 从 ant 调用 wsimport 生成的类中去掉 JAXBElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com