@XmlRootElement(name =“Helloworld”)注释再次引用原始类

时间:2013-01-24 09:25:48

标签: java web-services soap

我有一个班级

@XmlRootElement(name="Helloworld")
@XmlType(propOrder = { "userName"})
public class UserDetails {
    //User Name
    private String userName;

    @XmlElement(name="UserName")   
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

但是在我的WSDL中我还是得到了

<xs:element name="Helloworld" type="tns:userDetails"/>
<xs:complexType name="userDetails">
<xs:sequence>
<xs:element minOccurs="0" name="UserName" type="xs:string"/>
</xs:sequence>
</xs:complexType>

WSDL应该是这样的。

<xs:element name="Helloworld" type="tns:Helloworld"/>
<xs:complexType name="Helloworld">
<xs:sequence>
<xs:element minOccurs="0" name="UserName" type="xs:string"/>
</xs:sequence>
</xs:complexType>

我错过了什么。有人可以对此提出建议。

2 个答案:

答案 0 :(得分:1)

@XmlRootElement上的名称仅影响元素声明,也可以更改在@XmlType注释上指定名称所需的复杂类型的名称。

答案 1 :(得分:1)

尝试使用:

@XmlRootElement(name="Helloworld")
@XmlType(name = "HelloWorld", propOrder = {"userName"})
public class UserDetails {
    //User Name
    private String userName;

    @XmlElement(name="UserName")   
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}