如何解决jax-ws @XmlRootElement不生成根元素名称
|| 我在日食中创建了一个示例jax-ws项目。 下面是具有Interface,Imp类和Helper类的代码 介面@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类中声明了“ 4”。我的问题是,为什么在\'TypeCode \'而不是\'Result \'的根元素上没有封送处理。 jax-ws是否忽略@XmlRootElement
并加上@WebResult
?
解决方法
通过您的示例,您可以回答自己的问题。
创建响应时,result元素始终是方法结果的定义名称,这就是为什么有@WebResult批注的原因。
如果您未指定返回名称,则默认为\'return \'。在此元素中,结果对象的每个字段都有一个。
对于您的情况,因为您有一个列表,所以jaxb将其封送为一系列子元素,而没有列表的名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。