2012-10-12 54 views
7

我正在使用JAXB在Maven中使用JAXB插件从XSD生成bean。 这工作正常,期望代码包含每个字段的isSetXXXXXX()方法。JAXB Bean生成

例如

一个字段的firstName,它产生下面的代码:

@XmlElement(name = "FirstName", required = true) 
    protected String firstName; 

    public String getFirstName() { 
     return firstName; 
    } 

public void setFirstName(String firstName) { 
     this.token = firstName; 
    } 

    public boolean isSetFirstName() { 
     return (this.firstName!= null); 
    } 

这isSetFirstName()方法导致的问题,我不想JAXB生成这些。

有没有办法阻止这种行为?

谢谢。

UPDATE

解决了这个:问题是在XJB文件,generateIsSetMethod设置为true。

<xs:annotation> 
    <xs:appinfo> 
     <jaxb:globalBindings generateIsSetMethod="true"> 

     bindingStyle="modelGroupBinding" 
     choiceContentProperty="true" > 

      <xjc:serializable uid="12343"/> 
      <jaxb:javaType name="short" 
       xmlType="xs:long" 
       printMethod="javax.xml.bind.DatatypeConverter.printShort" 
       parseMethod="javax.xml.bind.DatatypeConverter.parseShort"/> 

     </jaxb:globalBindings> 
    </xs:appinfo> 
</xs:annotation> 

这也回答了我的previous question

+0

嘿adi,您更新的XML代码片段是无效的XML,是在'generateIsSetMethod =“true”'之后>是否在那里? –

回答

8

默认情况下,JAXB(JSR-222)实现不会生成isSet方法。既然你让他们执行下列操作之一必须是真实的:

  1. 您可以在模式注释指定:<jaxb:globalBindings generateIsSetMethod="true"/>
  2. 你有一个指定外部绑定文件:<jaxb:globalBindings generateIsSetMethod="true"/>
  3. 您指定一个属性Maven插件生成isSet方法。
+0

虽然我在回答之前回答了我的问题,但仍然是正确和翔实的答案,所以一个很大的答案。 – adi