2009-06-10 26 views
17

Tôi đang sử dụng JAXB để unmarshall một tập tin XML vào một đối tượng Java - công cụ tiêu chuẩn. Khi JAXB đã hoàn tất việc này, tôi muốn một phương thức được gọi trên đối tượng mới được tạo ra.Làm thế nào tôi có thể có JAXB gọi một phương thức sau khi nó đã hoàn thành unmarshalling một tập tin XML vào một đối tượng?

Có cơ chế để thực hiện việc này không? Tôi thích các đối tượng, không phải là một thực thể bên ngoài, làm điều này để giữ cho xây dựng ở một nơi.

Cảm ơn.

+0

Tôi không hiểu, bạn có muốn phương thức được gọi sau quá trình tự động sửa không? –

+0

Có; chính xác. Một cái gì đó giống như JUnit @BeforeClass, nơi một phương pháp được gọi sau khi xây dựng và mutators được gọi là. – Elliot

Trả lời

7

Để có thể thực thi mã sau unmarshalling diễn ra, bạn cần một Unmarshaller-Listener

Tuy nhiên, tôi không chắc chắn, nếu người nghe được gọi sau khi thuộc tính được thiết lập trở về trước.

LƯU Ý: Người nghe có sẵn từ JAXB- 2.0 (JDK-)

+0

Ivan, vui lòng đọc lại câu hỏi. Tôi muốn một số mã thực hiện sau khi constructor và mutators đã được gọi. – Elliot

+0

Tôi đã sửa đổi câu hỏi của mình –

+0

Cảm ơn bạn, Ivan. Tôi đã không tìm thấy một tham chiếu đến một Unmarshaller.Listener trước - cảm ơn cho câu trả lời. – Elliot

12

Ngoài các Unmarshaller.Listener bạn có thể thêm các phương pháp sau đây để các lớp mô hình tên miền của bạn mình.

  • public void beforeUnmarshal(Unmarshaller unmarshaller, Object parent)
  • public void afterUnmarshal(Unmarshaller unmarshaller, Object parent)

Từ: http://java.sun.com/javase/6/docs/api/javax/xml/bind/Unmarshaller.Listener.html

+0

Chữ ký của phương thức sai và do đó nó không hoạt động. Đối tượng đầu tiên phải thuộc loại "Unmarshaller". – Robert

+0

@Robert - Chữ ký phương thức hiện đã được sửa chữa. –

26

Bạn có thể đơn giản thêm các phương pháp sau đây để định nghĩa đối tượng của bạn:

void afterUnmarshal(Unmarshaller u, Object parent) { 
    ... 
} 

Nó sẽ được gọi ONC e đối tượng hiện tại đã được deserialized hoàn toàn. Xem thêm tài liệu về unmarshalling callbacks

Các vấn đề liên quan