2012-10-12 78 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