हमारे पास एक संपत्ति पर एक जेएक्सबी एनोटेशन के साथ एक कक्षा है। इसके बाद हमारे पास कई उप-वर्ग हैं जो शेष महत्वपूर्ण डेटा को एनोटेट करते हैं। हमारे पास एक सबक्लास है, हालांकि, जहां हम अभिभावक वर्ग एनोटेशन को अनदेखा करना चाहते हैं ताकि उसे मार्शल नहीं किया जा सके। यहां कुछ उदाहरण कोड है।अभिभावक वर्ग में जेएक्सबी एनोटेटेड गुणों को अनदेखा कैसे करें?
जनक वर्ग:
@XmlType(name="Request")
@XmlAccessorType(XmlAccessorType.NONE)
public abstract class Request {
@XmlElement(required=true)
private UUID uuid;
... setter/getter
}
अब उपवर्ग के लिए
:
@Xsd(name="concreteRequest")
@XmlRootElement("ConcreteRequest")
@XmlType(name="ConcreteRequest")
@XmlAccessorType(XmlAccessorType.FIELD)
public class ConcreteClass {
@XmlElement(required=true)
private String data1;
@XmlElement(required=true)
private String data1;
... setters/getters ...
}
जब मैं ConcreteClass का एक उदाहरण मैं निम्न XML मिल masrhall:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<uuid>uuid</uuid>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
मैं कहां से एक्सएमएल चाहते इस तरह:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConcreteRequest>
<data1>data</data1>
<data2>data</data3>
</ConcreteRequest>
हमारे पास अनुरोध के अन्य कार्यान्वयन हैं, हालांकि यूयूआईडी की आवश्यकता है, यह सिर्फ एक विशेष मामला है। क्या मेरे ConcreteRequest में UUID फ़ील्ड को अनदेखा करने का कोई तरीका है?
दुर्भाग्य से मुझे नहीं लगता कि यह मेरी स्थिति में संभव है। यूयूआईडी क्षेत्र हमारे डेटाबेस में जारी है इसलिए ओवरराइडिंग यह खतरनाक होगा। असल में मेरी कक्षा एक विशेष उप-वर्ग है जहां इसकी एक यूयूआईडी है लेकिन यह एक्सएमएल स्कीमा से संबंधित नहीं है। – prozaak
मेरे विश्लेषण से, जेएक्सबी आपकी आवश्यकता के लिए एक उपयुक्त विकल्प प्रदान नहीं करता है, मैं सुझाव दूंगा कि जेएक्सबी व्यवहार का उपयोग करना है - "@XmlElement (nillable = false)" के दौरान शून्य मान तत्व को अनदेखा कर दिया जाएगा। इसलिए, मार्शलिंग के समय मूल्य "यूयूआईडी" की व्याख्या को शून्य के रूप में बनाते हैं, ताकि यह मार्शलिंग के दौरान संपत्ति का निर्माण न करे। मेरे पास कोड का नमूना टुकड़ा है लेकिन यहां साझा नहीं किया जा सका। – omega
यह सिर्फ काम नहीं करता है। – GoalBased