JAXB可以有效地用于仅使用少量注释将结构转储为XML。 JAXB的诗歌并不是真的需要创建一些DTO,或者使用样板代码过多地混乱编组的类。
但是经常会发生提供数据的方法不是getter,而是像formatDescription()甚至toString()。
如果它只是一个类,这并不重要,因为它可以通过添加getDescription()进行子类化。 但是,当利用MOXy的功能来编组接口时,这变得更加困难 - 必须将该方法添加到接口并且所有实现都已更改;或接口子类化,也都是impls。
// @XmlElement(name = "desc") // DOESN'T WORK.
String toDescription();
// JAXB needs getter :/
@XmlElement(name = "desc")
String getDescription();
有没有办法让MOXy接受方法不以get*
开头?
答案 0 :(得分:1)
我发现了MOXy allows external metadata in XML files(而不是注释)。 也在Jaxb EclipseLink/MOXy : Is it possible to specify the names of get/set methods中描述。
所以在这种情况下,我会设置
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
package-name="forum8834871">
<java-types>
<java-type name="ServerInfo" xml-accessor-type="PUBLIC_MEMBER">
<xml-root-element/>
<java-attributes>
<xml-element name="desc" java-attribute="description" >
<xml-access-methods get-method="toDescription"/>
</xml-element>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
未经测试,如果省略set-method
,可能无效。
无论如何 - 这只是一种解决方法,所以我filled a feature request。