2015-05-13 5 views
6

मैंने विकेट ढांचे को सीखना शुरू कर दिया है और मैं विकेट मॉडल में आया हूं और मैंने मॉडल(), कंपौनेमोडेल() और कंपाउंडप्रोपर्टी मॉडेल() के बारे में पढ़ा है, लेकिन मुझे उनके बीच वास्तविक अंतर नहीं मिला। मैंने इसके लिए Google पर खोज की, लेकिन मुझे इसके बारे में कोई जानकारी नहीं मिली।विकेट में मॉडल, प्रॉपर्टी मॉडेल और कंपाउंडप्रॉपर्टी मॉडल के बीच क्या अंतर है?

यह link कंपाउंडप्रोपर्टी मॉडेल और प्रॉपर्टी मॉडेल के बीच विवरण देता है लेकिन फिर भी यह अंतर के लिए ठीक से स्पष्ट नहीं है।

केवल वही चीज़ जो मैं मॉडल और अन्य दो के बीच अंतर कर सकता हूं वह मॉडल गतिशील क्षेत्रों के साथ काम नहीं कर सकता है जबकि अन्य दो कर सकते हैं।

क्या कोई इन मॉडलों के बीच अंतर दे सकता है?

उत्तर

9

उनमें से सभी इंटरफ़ेस IMODEL के कार्यान्वयन हैं।

कक्षा मॉडल एक बुनियादी कार्यान्वयन है, जो लगभग एक 'डेटा धारक' है ताकि आप उस मॉडल में किसी ऑब्जेक्ट को स्टोर कर सकें और प्राप्त कर सकें। संग्रहीत ऑब्जेक्ट एक अन्य मॉडल (IModel) है, तो इस वर्ग का जोड़ा मान मॉडल ऑब्जेक्ट को प्राप्त करने और सेट करने के लिए अग्रेषित करना है।

कक्षा संपत्ति मॉडल उपयोगी है यदि आप संपत्ति अभिव्यक्ति का उपयोग करके संपत्ति सेट करना चाहते हैं।

class Data { 

    private Integer data; 
    private String name; 

    /* getters and setters */ 

} 

हो और PropertyModel का उपयोग कर डेटा कैसे निर्धारित करें:: एक उदाहरण देखें

Data data = new Data(); 
data.setId(1); 
data.setName("data entity"); 
IModel idModel = new PropertyModel(data, "id"); 
IModel nameModel = new PropertyModel(data, "name"); 

System.out.println(data.getId()); 
// prints '1' 
System.out.println(idModel.getObject()); 
// prints '1' 
System.out.println(data.getName); 
// prints 'data entity' 
System.out.println(nameModel.getObject()); 
// prints 'data entity' 


data.setId(2); 
nameModel.setObject("a new name"); 

System.out.println(data.getId()); 
// prints '2' 
System.out.println(idModel.getObject()); 
// prints '2' 
System.out.println(data.getName()); 
// prints 'a new name' 
System.out.println(nameModel.getObject()); 
// prints 'a new name' 

कक्षा CompoundPropertyModel उपयोगी है जब आप उनकी आईडी के आधार घटकों के लिए गुण propage करना चाहते हैं।

जावा कोड (MyPanel.java):

class MyPanel extends Panel { 

    public MyPanel(IModel<Data> model) { 
     super(new CompoundPropertyModel<Data>(model)); 
     add(new Label("id")); 
     add(new Label("data")); 
    } 
} 

मार्कअप (MyPanel.html):

<wicket:panel> 
    <span wicket:id="id">placeholer for id</span> 
    <span wicket:id="name">placeholer for id</span> 
</wicket:panel> 

जावा एक उदाहरण (एक ही कक्षा डेटा का उपयोग कर) देखें MyClass का उपयोग कर कोड:

// in a Page, Panel or an other Component 
Data data = new Data(); 
data.setId(3); 
data.setName('my name'); 
add(new MyPanel(Model.of(data))); 

गाया उत्पादन एचटीएमएल (पैनल द्वारा):

<span>3</span> 
<span>my name</span> 
संबंधित मुद्दे