gpt4 book ai didi

jaxb - jax-ws @XmlRootElement 不生成根元素名称

转载 作者:行者123 更新时间:2023-12-02 05:10:33 26 4
gpt4 key购买 nike

我在我的 eclipse 中创建了一个示例 jax-ws 项目。

下面是包含Interface、Imp类和Helper类的代码

接口(interface):

@WebService

public interface HelloWorld
{

@WebMethod(operationName="getString")
@WebResult(name="Result")
Helper getHelloWorldAsString(@WebParam(name="input")String str);
}

实现:

@WebService(endpointInterface = "com.test.HelloWorld")
public class HelloWorldImpl implements HelloWorld
{

@Override
public Helper getHelloWorldAsString(String str) {

Helper h = new Helper();
String[] str1 = {"ABC", "DEF", "GHI"};
h.setTempValue(str1);


return h;
}
}

助手:

@XmlRootElement(name = "TypeCode")
@XmlType(name = "TypeCode")
@XmlAccessorType(XmlAccessType.FIELD)

public class Helper
{
@XmlElement(name="value")
private String[] tempValue;

public String[] getTempValue() {
return tempValue;
}

public void setTempValue(String[] tempValue) {
this.tempValue = tempValue;
}
}

当我部署上面的代码并发送请求时,我看到如下响应:

<ns2:getStringResponse xmlns:ns2="http://test.com/">
<Result>
<value>ABC</value>
<value>DEF</value>
<value>GHI</value>
</Result>
</ns2:getStringResponse>

上述响应的根元素为“Result”,但我在 Helper 类中声明了 @XmlRootElement(name = "TypeCode")。我的问题是为什么没有将“TypeCode”编码为根元素而不是“Result”。 jax-ws 是否忽略 @XmlRootElement 并使用 @WebResult

最佳答案

用你的例子回答你自己的问题。
当创建响应时,结果元素总是作为方法结果的定义名称,这就是为什么有一个@WebResult 注释。
如果不指定返回名,默认为'return'。在这个元素中,结果对象的每个字段都有一个。
在你的例子中,因为你有一个列表,jaxb 将其编码为一系列子元素,没有列表的名称。

关于jaxb - jax-ws @XmlRootElement 不生成根元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096478/

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