Ber*_*iri 5 java cxf spring-mvc jax-ws jaxb
为什么示例A工作,而示例B抛出"JAXB注释放在不是JAXB属性的方法上"异常?
我正在使用JAX-WS和Spring MVC.
例A
package com.casanosa2.permissions;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "FooXMLMapper")
public class FooXMLMapper implements IFoo {
@XmlElement
private final boolean propA;
@XmlElement
private final boolean propB;
public FooMapper(IFoo foo) {
propA = foo.getPropA()
propB = foo.getPropB()
}
public FooMapper() {
propA = false;
propB = false;
}
@Override
public boolean getPropA() {
return propA;
}
@Override
public boolean getPropB() {
return propB;
}
}
Run Code Online (Sandbox Code Playgroud)
例B
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlType(name = "FooXMLMapper")
public class FooXMLMapper {
private final IFoo foo;
public FooMapper() {
foo = new IFoo() {
@Override
public boolean getPropA() {
return false;
}
@Override
public boolean getPropB() {
return false;
}
};
}
public FooXMLMapper(IFoo foo) {
this.foo = foo;
}
@XmlElement
public boolean getPropA() {
return foo.getPropA();
}
@XmlElement
public boolean getPropB() {
return foo.getPropB();
}
}
Run Code Online (Sandbox Code Playgroud)
我相信如果访问器直接查看实例变量而忽略访问器,并且在示例B中没有正确名称的实际实例变量.您必须明确告诉它在类上使用@XmlAccessorType(XmlAccessType.NONE),在get/set方法上使用@XmlElement和@XmlAttribute.至少,这就是我最终用JAXB映射做的事情.
归档时间: |
|
查看次数: |
19508 次 |
最近记录: |