2009-06-10 8 views
17

मैं जावा ऑब्जेक्ट में मानक एक्सएमएल फ़ाइल को अनमशशॉल करने के लिए जेएक्सबी का उपयोग कर रहा हूं - मानक सामान। एक बार जेएक्सबी ने इसे पूरा कर लिया है, तो मुझे नव निर्मित वस्तु पर एक विधि कहा जाना चाहिए।किसी ऑब्जेक्ट में एक्सएमएल फ़ाइल को अनमर्शलिंग करने के बाद मैंने जेएक्सबी को एक विधि कैसे कॉल कर सकते हैं?

क्या ऐसा करने के लिए कोई तंत्र है? मैं ऑब्जेक्ट को प्राथमिकता नहीं दूंगा, बाहरी इकाई नहीं, इसे एक ही स्थान पर निर्माण के लिए करें।

धन्यवाद।

+0

के बारे में प्रलेखन भी देखें, मुझे समझ में नहीं आता है, आप अनारशेलिंग प्रक्रिया के बाद स्वचालित रूप से कॉल करने के लिए एक विधि चाहते हैं? –

+0

हां; ठीक ठीक। JUnit's @BeforeClass की तरह कुछ जहां निर्माण और mutators के नाम के बाद एक विधि कहा जाता है। – Elliot

उत्तर

7

unmarshalling के बाद जगह ले ली कोड निष्पादित करने में सक्षम होने के लिए, आप एक Unmarshaller-Listener

जरूरत है लेकिन, मैं अगर श्रोता के बाद गुण सेट या उससे पहले कर रहे हैं उत्पन्न होता है, यकीन नहीं है।

नोट: श्रोता JAXB- 2.0 के बाद से उपलब्ध है (JDK-)

+0

इवान, कृपया प्रश्न को दोबारा पढ़ें। मैं कन्स्ट्रक्टर और म्यूटेटर को बुलाए जाने के बाद कुछ कोड निष्पादित करना चाहता हूं। – Elliot

+0

मैंने अपना प्रश्न –

+0

संशोधित किया है धन्यवाद, इवान। मुझे Unmarshaller का संदर्भ नहीं मिला था। पहले लिस्टनर - उत्तर के लिए धन्यवाद। – Elliot

12

Unmarshaller.Listener के अलावा आप अपने डोमेन मॉडल वर्गों खुद को निम्न विधियों में जोड़ सकते हैं।

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

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

+0

विधि हस्ताक्षर गलत हैं और इसलिए यह काम नहीं करता है। पहला ऑब्जेक्ट "Unmarshaller" प्रकार होना चाहिए। – Robert

+0

@Robert - विधि हस्ताक्षर अब सही किया गया है। –

26

आप सरल अपने वस्तु परिभाषा के लिए निम्न विधि जोड़ सकते हैं:

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

यह onc बुलाया जाएगा ई वर्तमान वस्तु पूरी तरह से deserialized किया गया है। unmarshalling callbacks

संबंधित मुद्दे

 संबंधित मुद्दे