2012-04-27 50 views
1

我有以下的代码,在返回Foo错误产生的JAXB(WebService的)XML

@GET 
@Produces (MediaType.APPLICATION_XML) 
public Foo getXML(){ 
    System.out.println ("getXML Request"); 
    Foo f = new Foo(); 
    d.setA("test"); 
    d.setB("xyxyx"); 
    return f; 
} 

和我Foo类是

@XmlRootElement 
public class Foo{ 

    public void setA(String a) { 
     this.a = a; 
    } 

    public void setB(String b) { 
     this.b = b; 
    } 

     public String getB(){ 
      return b; 
     } 

     public String getA(){ 
      return a; 
     } 

    @XmlAttribute(name="atrribB") 
    private String b; 

    @XmlElement(name="elementA") 
    private String a; 

} 

虽然这样做,我得到了错误的FooClass has two properties of the same name "A"B也是如此。

当我删除这两个属性的方法getters,一切都很好。我是不是想创建getter setter,并让字段具有公共?

回答

3

您需要任何注释get方法

@XmlRootElement 
public class Foo{ 

    public void setA(String a) { 
     this.a = a; 
    } 

    public void setB(String b) { 
     this.b = b; 
    } 

    @XmlAttribute(name="atrribB") 
    public String getB(){ 
     return b; 
    } 

    @XmlElement(name="elementA") 
    public String getA(){ 
     return a; 
    } 

    private String b; 

    private String a; 

} 

或指定@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Foo{ 

    public void setA(String a) { 
     this.a = a; 
    } 

    public void setB(String b) { 
     this.b = b; 
    } 

    public String getB(){ 
     return b; 
    } 

    public String getA(){ 
     return a; 
    } 

    @XmlAttribute(name="atrribB") 
    private String b; 

    @XmlElement(name="elementA") 
    private String a; 

} 

更多信息

+0

它去都得到/字段集?因为我将在某个时候使用这个类来生成/接收XML。 – 2012-04-27 16:29:32

+1

只是其中一个获取或设置方法。我已经更新了我的答案来证明这一点。 – 2012-04-27 16:32:59