[英]Marshalling of boolean values using JAXB issue
I have a boolean attribute in a java class private boolean isCurrent;
我在java类中有一个布尔属性
private boolean isCurrent;
Now in xml it gets marshalled into <current>false</current>
. 现在在xml中将其编组为
<current>false</current>
。 Now the field i have is only isCurrent
. 现在我所拥有的领域只是
isCurrent
。 How do i preserve the name isCurrent
as it is in XML?. 如何保留XML中的
isCurrent
名称? Though i know it is not related to getters & setter s of the boolean just for information, they are named as setCurrent & isCurrent taking the defaults of eclipse IDE. 尽管我知道它与布尔型的getter和setter无关,只是为了提供信息,但它们使用eclipse IDE的默认设置命名为setCurrent和isCurrent。
A presence of an empty tag could be mapped to a boolean. 空标记的存在可以映射为布尔值。 For eg
<isPresent/>
Use an XmlAdaptor: 例如,
<isPresent/>
使用XmlAdaptor:
package com.example.xml.adaptor;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class BooleanToEmptyObjectAdapter extends XmlAdapter<EmptyObject, Boolean> {
@Override
public EmptyObject marshal(final Boolean v) {
return v != null && v ? new EmptyObject() : null;
}
@Override
public Boolean unmarshal(final EmptyObject v) {
return true;
}
}
And a dummy object for it to serialize: 还有一个虚拟对象要序列化:
package com.example.xml.adaptor;
public class EmptyObject {
// EMPTY
}
Then in your object, use a Boolean (not a boolean) field: 然后在您的对象中,使用布尔值(而非布尔值)字段:
@XmlRootElement(name = "FooElement")
public class Foo {
@XmlElement()
@XmlJavaTypeAdapter(BooleanToEmptyObjectAdapter.class)
private final Boolean isPresent = false;
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.