Patan
Patan

Reputation: 17883

@XmlRootElement(name="Helloworld") annotation again referring to original class

I have a class as

@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;
    }
}

But In my WSDL I still get

<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>

The WSDL should be like this.

<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>

Am I missing any thing. Can some suggest on this.

Upvotes: 1

Views: 107

Answers (2)

TechSpellBound
TechSpellBound

Reputation: 2555

Try using this :

@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;
    }
}

Upvotes: 1

Ian Roberts
Ian Roberts

Reputation: 122364

The name on @XmlRootElement only affects the element declaration, to change the name of the complex type you need to specify a name on the @XmlType annotation as well.

Upvotes: 1

Related Questions