2011-09-14 15 views
5

मेरे पास एक वेब सर्किस विधि है जो किसी ऑब्जेक्ट को प्राप्त करती है। गुणों में से एक "अंतराल" है जो एक पूर्णांक है।सीएक्सएफ - एक विशेषता आवश्यक और गैर-आदिम घोषित कैसे करें?

मैं इस एट्रिब्यूट को आवश्यक बनाना चाहता हूं लेकिन बिना किसी डिफ़ॉल्ट मूल्य प्रदान किए - मैं चाहता हूं कि उपयोगकर्ता को स्पष्ट रूप से मूल्य निर्धारित करना आवश्यक हो।

यदि मैं int interval का उपयोग करता हूं - विशेषता int के रूप में उजागर की जाती है और यदि उपयोगकर्ता स्पष्ट रूप से विशेषता सेट नहीं करता है, तो शून्य (आदिम int के लिए जावा डिफ़ॉल्ट) भेजा जाएगा।

यदि मैं Integer interval का उपयोग करता हूं - विशेषता को इंटीजर के रूप में उजागर किया जाता है और डब्लूएसडीएल में वैकल्पिक घोषित किया जाता है ताकि उपयोगकर्ता यह नहीं देख सके कि अनुरोध भेजने से पहले इसकी आवश्यकता हो।

यदि मैं Integer interval@XmlElement(required = true) या @XmlElement(nillable = false) के साथ उपयोग करता हूं - विशेषता int के रूप में सामने आती है।

विशेषता में कोई पूर्णांक - नकारात्मक, शून्य और सकारात्मक हो सकता है, इसलिए मैं यह इंगित करने के लिए डिफ़ॉल्ट मान का उपयोग नहीं कर सकता कि विशेषता स्पष्ट रूप से सेट नहीं की गई थी।

मैं BigInteger interval@XmlElement(required = true) के साथ उपयोग कर सकता हूं लेकिन हम कोर प्रकार इंटीजर का उपयोग करने के फायदे खो रहे हैं।

मैं विशेषता को इंटीजर के रूप में बेनकाब करना चाहता हूं, इसलिए यदि उपयोगकर्ता ने विशेषता सेट नहीं की है तो मैं शून्य हो जाऊंगा और साथ ही मैं डब्लूएसडीएल को यह खुलासा करना चाहूंगा कि विशेषता आवश्यक है ताकि उपयोगकर्ता जान सकें कि यह आवश्यक है बस डब्लूएसडीएल को देखकर।

उत्तर

3

@XmlElement(required = true) साथ डबल्यूएसडीएल सही था, लेकिन समस्या यह है कि जब मेरी डबल्यूएसडीएल पर org.apache.cxf.tools.wsdlto.WSDLToJava उपकरण का उपयोग कर ग्राहक int interval बजाय Integer interval साथ उत्पन्न किया गया था।

समाधान फ़ाइल है कि नक्शे XSD एक JAXB बाइंडिंग के लिए एक पथ के साथ wsdl2java उपकरण के लिए "बी" विकल्प पारित करने के लिए है: java.lang.Integer को पूर्णांक:

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      jaxb:version="2.0"> 
    <jaxb:globalBindings> 
    <jaxb:javaType name="java.lang.Integer" 
        xmlType="xsd:int" /> 
    </jaxb:globalBindings> 
</jaxb:bindings> 

@XmlElement(required = true) का उपयोग करना और "बी" विकल्प, तत्व आवश्यक (minOccurs = "1") रखा और जावा क्लाइंट के लिए एक इंटीजर के रूप में उजागर किया।

अधिक जानकारी: http://cxf.547215.n5.nabble.com/How-to-declare-an-attribute-required-and-non-primitive-td4815370.html

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