【问题标题】:JAXB giving an exception when trying to Marshall with given orderJAXB 在尝试使用给定顺序进行 Marshall 时给出异常
【发布时间】:2016-04-04 08:56:32
【问题描述】:

我有一个类似的代码

@XmlRootElement(name = "root")
@XmlType(propOrder={"param1", "param2""})
public class Demo{
public Demo() {
}
private int param1;
private String param2;
private String param3;



public int getparam1() {
    return param1;
}

@XmlElement
public void setparam1(int param1) {
    this.param1= param1;
}

//other setters and getters here except for param3
}

但它给了我

      n4 counts of IllegalAnnotationExceptions

当我尝试运行程序时出现异常(我在原始代码中总共有 6 个参数,只有 4 个用于 Marshall)

这是什么原因?

【问题讨论】:

    标签: java exception jaxb


    【解决方案1】:

    @XmlType 注释中有错误:

    @XmlType(propOrder={"param1", "param2","param3"})
    

    如果这不能解决问题,请尝试检查 propOrder 中的属性名称或直接使用字段访问器类型:

    @XmlRootElement(name = "root")
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(propOrder={"param1", "param2", "param3"})
    public class Demo{
    
    public Demo() {
    }
    
    private int param1;
    private String param2;
    private String param3;
    
    //getter & setters without annotations
    
    }
    

    【讨论】:

    • 是的,但我只想在我的 XML 程序中的 3 个参数中取 2 个参数。所以给 @XmlAccessorType(XmlAccessType.FIELD) 会使它们都出现在 xml 中,对吗?
    • @XmlAccessorType(XmlAccessType.NONE),然后 @XmlElement 仅在您希望作为输出的字段上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多