2011-03-27 10 views
5

अरे दोस्तों। मैं फ्लोट नामक जावास्क्रिप्ट चार्टिंग लाइब्रेरी के लिए एक घटक बना रहा हूं।जेएसएफ समग्र घटकों के साथ पृष्ठ पर एक आईडी अद्वितीय कैसे बनाएं?

<cc:interface>   
    <cc:attribute name="data" required="true" /> 
</cc:interface> 

<cc:implementation>  

    <div id="placeholder" style="width:600px;height:300px;"></div> 

    <script type="text/javascript"> 
     //<![CDATA[ 
    $(function() {  

     var d1 = [#{cc.attrs.data}];  

     $.plot($("#placeholder"), [ d1 ]); 

    }); 
    //]]> 
    </script> 

</cc:implementation> 

यह अब तक की छोटी मात्रा में कोड है। मेरी समस्या यह है कि मैं उस div टैग को यादृच्छिक रूप से किसी पृष्ठ पर कैसे उत्पन्न करूं ताकि मैं एकाधिक चार्ट आउटपुट कर सकूं। जाहिर है कि यह वर्तमान स्थिति में ऐसा नहीं करेगा। मुझे मूल्य को जावास्क्रिप्ट फ़ंक्शन में पास करने की आवश्यकता होगी।

मुझे पता है कि मैं सिर्फ आईडी के साथ एक और विशेषता बना सकता हूं और उपयोगकर्ता को आईडी निर्दिष्ट करना होगा, लेकिन मैंने कई घटकों पर ध्यान दिया है जिन पर आईडी की आवश्यकता नहीं है। यह भारी AJAX/जावास्क्रिप्ट पुस्तकालयों में प्राइमफेस और हिमस्खलन जैसे लगता है कि आईडी कुछ यादृच्छिक हैं।

किसी भी मदद के लिए धन्यवाद।

उत्तर

6

आप #{cc.id} द्वारा समग्र घटक की अपनी आईडी प्राप्त कर सकते हैं। तो विशिष्टता सुनिश्चित करने के लिए, बस कार्य करें:

<div id="#{cc.id}_placeholder" style="width:600px;height:300px;"></div> 

और

$.plot($("##{cc.id}_placeholder"), [ d1 ]); 

JSF एक autogenerate अगर आप घटक पर कोई id विशेषता निर्दिष्ट नहीं है। जैसे

<my:plot id="foo"> 

यहाँ foo समग्र घटक कार्यान्वयन में #{cc.id} के रूप में इस्तेमाल किया जाएगा।

+0

वहां हम जाते हैं। धन्यवाद। मैं आईडी को एक विशेषता के रूप में जोड़ रहा था। पता नहीं था कि पहले से ही एक परिभाषित किया गया था। मान लीजिए मैंने इस पर पर्याप्त नहीं पढ़ा। –

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