我正在使用Jaxb2Marshaller编组和解组肥皂请求和响应。
我的java模型类是基于使用xjc的wsdl生成的。
我有一个奇怪的要求,xsd:boolean类型的字段应该在结果xml中被封送为1或0(默认情况下为" true"或者" false"使用值)
我已经尝试按如下方式创建XmlAdapter:
public class JaxbBooleanAdapter extends XmlAdapter<Integer, Boolean> {
@Override
public Boolean unmarshal(final Integer v)
{
return v == null ? null : v == 1;
}
@Override
public Integer marshal(final Boolean v)
{
return v == null ? null : v ? 1 : 0;
}
}
并设置我的Jaxb2Marshaller来使用它:
marshaller.setAdapters( new JaxbBooleanAdapter() );
但它不起作用。
当我使用@XmlJavaTypeAdapter( JaxbBooleanAdapter.class )
注释java模型类时,它工作得很完美,但我的java模型是由xjc生成的,我无法使用绑定生成注释,我尝试了以下绑定:
<bindings version="2.0" xmlns="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
<globalBindings>
<xjc:javaType xmlType="xsd:boolean" name="java.lang.Boolean"
adapter="br.com.neolog.label.integration.configuration.JaxbBooleanAdapter" />
</globalBindings>
</bindings>
我的问题是:有没有办法强制Jaxb2Marshaller为使用xjc生成的java模型类将布尔值编组为0/1?