2017-08-17 55 views
5

हमारे पास शून्य डोमेन वाले कई डोमेन ऑब्जेक्ट्स हैं। हमने पढ़ा है कि हाइबरनेट को 'कच्चे' ऑब्जेक्ट को सही तरीके से मैप करने की आवश्यकता है, इसलिए हमारे गेटर्स विकल्प विकल्प लौटाते हैं। हमारे डोमेन वस्तुओं इस तरह दिखेगा:जेएसपीएक्स में विकल्प कैसे संभालें?

public class User { 

    private String firstName; 

    private User boss; 

    public Optional<String> getFirstName(){ 
     .... 
    } 

    public Optional<User> getBoss() { 
     ... 
    } 
} 

लेकिन अब हम समस्याओं को हल करने/.jspx फाइलों में इन क्षेत्रों के लिए बाध्य है। (दोनों फॉर्म इनपुट फ़ील्ड के साथ-साथ प्रदर्शित होते हैं।) आदिम प्रकारों और स्ट्रिंग्स के लिए हम कस्टम वैकल्पिक टॉस्ट्रिंग कनवर्टर को परिभाषित करके इसे बाईपास कर सकते हैं।

अभी भी एक समस्या अन्य डोमेन ऑब्जेक्ट्स के लिए निरर्थक संदर्भ हैं।

हम कई विकल्पों पर विचार, लेकिन उनमें से किसी के साथ वास्तव में संतुष्ट नहीं हैं: सभी डोमेन वस्तुओं और प्रकार (कई कन्वर्टर्स करने के लिए नेतृत्व करेंगे, और इनपुट फ़ील्ड के लिए काम करने के लिए प्रतीत नहीं होता है के लिए

  • परिभाषित कस्टम कन्वर्टर्स)
  • प्रत्येक डोमेन ऑब्जेक्ट पर वैकल्पिक और गैर-वैकल्पिक गेटर्स को परिभाषित करना (1. डुप्लिकेट कोड, 2. हम निरर्थक फ़ील्ड को साफ़ करने के लिए संकेत देना चाहते हैं, 3. वैकल्पिक और गैर-वैकल्पिक फ़ील्ड को अलग-अलग एक्सेस करने में साफ महसूस नहीं होता है)
  • 'शो कमांड' को परिभाषित करना जो 'कच्चे' मान या शून्य (डुप्लिकेट कोड)
  • देता है कि optionals (जब डोमेन वस्तु गैर वैकल्पिक हो जाता है हम Tagx परिवर्तन होगा)

हम अगर वहाँ jspx में optionals को हल करने के लिए एक अच्छे और साफ रास्ता सोचा संभालती

  • डिफाइनिंग कस्टम Tagx।

  • उत्तर

    0

    फॉर्म बाध्यकारी के मामले में, वसंत इसे काफी अच्छी तरह से संभालता है: उदा। यह नीचे दिए गए पहले मान को Optional.empty() पर मैप करेगा, और उपयुक्त Optional<Boolean> के लिए दूसरा और तीसरा होगा।

    <form:select path="anOptionalBoolean"> 
        <form:option value="" label="Not Specified"/> 
        <form:option value="true" label="Yes"/> 
        <form:option value="false" label="No"/> 
    </form:select> 
    

    मूल्यों को प्रदर्शित करने के संदर्भ में, मैं कुछ भी बस .get और .present आदि का उपयोग कर ईएल भाव भीतर की तुलना में बेहतर नहीं मिली है। यह काफी बोझिल कोड के लिए बनाता है।

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