2012-10-12 19 views
7

Tôi đang sử dụng JAXB để tạo hạt từ XSD bằng cách sử dụng một plugin JAXB trong Maven. Điều này làm việc tốt, mong rằng mã chứa các phương thức isSetXXXXXX() cho mỗi trường.JAXB Bean Generation

ví dụ:

cho một lĩnh vực firstName, nó được sản xuất đoạn mã sau:

@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); 
    } 

phương pháp isSetFirstName() Điều này gây ra các vấn đề và tôi không muốn JAXB để tạo ra những.

Có cách nào để ngăn chặn hành vi này không?

Cảm ơn.

CẬP NHẬT

Giải Quyết này: Vấn đề là trong file xjb, generateIsSetMethod được thiết lập là 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> 

Và điều này cũng đã trả lời số previous question của tôi.

+0

Xin chào adi, đoạn mã XML được cập nhật của bạn không phải là XML hợp lệ, là> sau 'generateIsSetMethod =" true "' có nghĩa là ở đó không? –

Trả lời

8

Theo mặc định, triển khai JAXB (JSR-222) sẽ không tạo ra phương thức isSet. Vì bạn đang nhận được chúng một trong những điều sau đây phải đúng:

  1. Bạn có một chú thích sơ đồ chỉ rõ: <jaxb:globalBindings generateIsSetMethod="true"/>
  2. Bạn có một tập tin ràng buộc bên ngoài mà quy định cụ thể: <jaxb:globalBindings generateIsSetMethod="true"/>
  3. Bạn đang xác định một tài sản để trình cắm thêm Maven để tạo các phương thức isSet.
+0

Mặc dù tôi đã trả lời câu hỏi của tôi trước khi bạn trả lời, nhưng đây vẫn là câu trả lời chính xác và đầy đủ thông tin, vì vậy có một câu trả lời lớn. – adi