这个简单的单道具类可以很好地工作,并且可以使用Ummarshale
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class AdditionalGetter {
private float a;
@XmlElement(name = "my_prop_a", required = false)
public float getA() {
return a;
}
public void setA(float a) {
this.a = a;
}
// public boolean isA() {
// return true;
// }
}
输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<additionalGetter>
<my_prop_a>7.0</my_prop_a>
</additionalGetter>
但是,如果我用方法isA()取消注释该行,它将不再工作,并且输出仅为(on win):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<additionalGetter/>
所以它看起来像是JAXB的命名冲突。实际上,acessor类型none应该忽略othef字段,但是isA()方法阻止了a字段被标记。
所以,一种不经意的修复方法,就是重命名方法isA(),以避免冲突。但我想知道:
1)这真的被JAXB禁止吗?如果是,这是在哪里描述的?
2) 有没有什么方法可以使封送工作正常,而不必重命名这个方法(并破坏现有的jar接口)?我试过@xmltransive,但没有效果。
只需将@xmltransive
添加到public boolean isA()
前面,就可以防止jaxb在生成的xml中包含该方法。
@XmlTransient
public boolean isA() {
return true;
}
我们想断言,自定义对象列表包含一个对象,其某些字段具有特定的值,以及一系列类似这样的断言 然而,自定义对象也有布尔类型字段,其中getter方法有一个“is”前缀而不是“get”,在那里断言似乎在以下情况下失败 是否有现成的解决方案来克服这一点,或者它应该用某种自定义匹配器来处理?
我需要在我的项目中实现本地化。我添加了一个带有前缀的组。 中间件setlocale 路由器列表 一切都很完美。但有一个问题。当我打开路线时: http://127.0.0.1:8000/en/projects/1 (展览项目) 我犯了一个错误 传递给App\Http\Controllers\ProjectsController::show()的参数1必须是App\Project的实例,字符串为 我
我有课 并希望将其转换为XML。但是,如果flag不为true,我需要在序列化期间忽略flag字段。 因此,如果flag=true,我希望得到:
使用jaxb2-maven-plugin和jaxb-xjc,在生成类时,jaxb创建带有get前缀的布尔访问器,但是我希望它使用java约定"is"创建。 这里是xsd: 创建的方法是; 但是我想要; 我试过了
当目标WSDL/XSDS放在某些特定路径下时,wsimport和xjc命令(都是作为Java JDK的一部分下载的)将忽略提供的jaxb绑定文件。
我一直在使用Metro,遇到了一个问题,wsgen似乎忽略了我在web方法响应类上添加的任何JAXB注释。 我试图返回一组实体类,我想通过网络服务向外部客户端公开,但是我只想让某些类属性和方法对外部客户端可见,所以将类存取类型设置为PROPERTY,并进行注释所有属性我想成为@XmlElement类的XML版本的一部分。 我可以使用schemagen ant任务为实体类创建XML模式,该任务正确地