Java 具有多个属性的Jax-ws-Enum
我有一个类型类:Java 具有多个属性的Jax-ws-Enum,java,jax-ws,enumeration,Java,Jax Ws,Enumeration,我有一个类型类: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name="Record") public class Record { @XmlAttribute(name="status") private Status status ; } 和枚举类: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(propOrder={"status","error"}) @XmlEn
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="Record")
public class Record
{
@XmlAttribute(name="status")
private Status status ;
}
和枚举类:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder={"status","error"})
@XmlEnum
public enum Status
{
OK(0, "No error"),
ERROR(1, "Some error") ;
@XmlAttribute(name="status", required=true)
private Integer status ;
@XmlAttribute(name="error", required=true)
private String error ;
private Status(Integer status, String error)
{
this.status=status ;
this.error=error ;
}
@Override
public String toString()
{
return "Status:" + this.status + " Error:" + this.error;
}
}
我得到的结果是:记录状态=“确定”
但我想要:记录状态=“确定”错误=“无错误”
我怎样才能做到这一点呢?这并不是您期望的工作方式,因为JAXB获取枚举名称,而不是使用
toString()
方法。但即使它这样做了,它仍然不会产生你想要的产出。它将产生:
<record status="Status:0 Error:No error"/>
另外,在
Status
enum上实际上不需要任何JAXB注释。唯一需要的时候是,如果希望XML中打印的值与枚举值不同(比如希望OK
在XML中显示为OK
)。请参阅@XmlEnum和@XmlEnumValue注释。如果要序列化类型记录,并且希望它具有两个属性,则该记录中需要两个属性类型。它不会从定义为一个属性(具有一个属性名称)的单个类型序列化两个属性。本质上,您的记录类需要看起来更像您的状态类。哦,thx,最近我只使用字段附件类型,我忘了我可以在getter上放置元素:)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name="Record")
public class Record
{
@XmlAttribute(name="status")
private Status status ;
@XmlAttribute(name="error")
private String getError(){
return status.getError();
}
}
public enum Status
{
OK(0, "No error"),
ERROR(1, "Some error") ;
private Integer status ;
private String error ;
private Status(Integer status, String error)
{
this.status=status ;
this.error=error ;
}
public String getError(){
return this.error;
}
}