(如何)我可以让JAXB(MOXy)接受非getter用于编组?

时间:2013-06-06 20:41:58

标签: java interface marshalling getter moxy

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*开头?

1 个答案:

答案 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