首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moxy正在编组未映射的java属性。

Moxy正在编组未映射的java属性。
EN

Stack Overflow用户
提问于 2012-08-07 15:18:18
回答 1查看 373关注 0票数 2

通过遵循这篇文章,我能够使用XML作为外部元数据。但是,Moxy正在编组属性,这些属性既没有注释也没有在外部XML元数据中指定。下面是如何避免这种行为的例子?我试过使用xml-mapping-metadata-complete="true",但没有用。

添加新前缀属性的类(为简洁删除其他属性)

代码语言:javascript
复制
public class Customer
{
    private String prefix;

    public void setPrefix(String prefix)
    {
        this.prefix = prefix;
    }

    public String getPrefix()
    {
        return prefix;
    }
}

元数据xml

代码语言:javascript
复制
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" package-name="blog.bindingfile">
   <xml-schema namespace="http://www.example.com/customer" element-form-default="QUALIFIED" />
   <java-types>
      <java-type name="Customer">
         <xml-root-element />
         <xml-type prop-order="firstName lastName address phoneNumbers" />
         <java-attributes>
            <xml-element java-attribute="firstName" name="first-name" />
            <xml-element java-attribute="lastName" name="last-name" />
            <xml-element java-attribute="phoneNumbers" name="phone-number" />
         </java-attributes>
      </java-type>
      <java-type name="PhoneNumber">
         <java-attributes>
            <xml-attribute java-attribute="type" />
            <xml-value java-attribute="number" />
         </java-attributes>
      </java-type>
   </java-types>
</xml-bindings>

输出

代码语言:javascript
复制
<customer xmlns="http://www.example.com/customer">
   <first-name>Jane</first-name>
   <last-name>Doe</last-name>
   <address>
      <street>123 A Street</street>
   </address>
   <phone-number type="work">555-1111</phone-number>
   <phone-number type="cell">555-2222</phone-number>
   <prefix>pre</prefix>
</customer>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-07 20:17:17

若要从已封送的XML中省略prefix属性,应在绑定文件中将其声明为transient

代码语言:javascript
复制
  ...
  <java-type name="Customer">
     <xml-root-element />
     <xml-type prop-order="firstName lastName address phoneNumbers" />
     <java-attributes>
        <xml-element java-attribute="firstName" name="first-name" />
        <xml-element java-attribute="lastName" name="last-name" />
        <xml-element java-attribute="phoneNumbers" name="phone-number" />
        <xml-transient java-attribute="prefix" />
     </java-attributes>
  </java-type>
  ...

默认情况下,JAXB将映射任何公共字段,因此由于prefix字段上没有显式的“注释”,所以它是以默认方式映射的。

xml-mapping-metadata-complete="true"的意思是“忽略Java类中的任何注释,并使用这个绑定文件作为映射信息的唯一来源--不要增加任何现有注释。”

希望这能帮上忙,瑞克

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11849027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档