2012-12-10 17 views
6

मैं अपने जीवनकाल पोर्टल में मिश्र धातु का उपयोग कर रहा हूं।लाइफरे में क्लाइंट साइड पोर्टल-आईडी कैसे प्राप्त करें?

मैं जावास्क्रिप्ट में अपने <input> की आईडी का उपयोग करना चाहता हूं। समस्या यह है कि तत्वों की आईडी क्लाइंट साइड में बदल दी गई है।

उदाहरण के लिए:
अगर मैं सेट एक <input> की पहचान करने के लिए "उपयोगकर्ता नाम" इसे करने के लिए _hospital_WAR_hospitalportlet_userName अर्थात _hospital_WAR_hospitalportlet_ क्रमांक, जहां Hospital मेरी portlet नाम है में जोड़ा जाता है बदल जाता है।

मैं क्लाइंट-साइड आईडी कैसे प्राप्त कर सकता हूं ताकि मैं इसे jquery में उपयोग कर सकूं?

उत्तर

7

स्ट्रिंग _hospital_WAR_hospitalportlet_<input> के Id पर प्रीपेड पोर्टलेट-नेमस्पेस के अलावा कुछ भी नहीं है।

यह केवल आपके <input> के name & id विशेषता के लिए prepended है अगर आप <aui:input> टैग का उपयोग और अगर आप सिर्फ सादे-वनिला एचटीएमएल <input> टैग का उपयोग name & id गुण परिवर्तित नहीं होते हैं।

लेकिन यह <aui:input> उपयोग करने के लिए आप अपने जावास्क्रिप्ट कोड में portlet-नाम स्थान प्राप्त करने के लिए निम्न कर सकते हैं एक अच्छा अभ्यास है के रूप में:

  1. आप एक JSP यानी अंदर javascripts <script> .. </script> या भीतर का उपयोग कर उपयोग कर रहे हैं <aui:script> .. </aui:script> तो आप <portlet:namespace /> या <%= renderResponse.getNamespace() %> अपने जावास्क्रिप्ट, की तरह कुछ अंदर स्ट्रिंग _hospital_WAR_hospitalportlet_ प्राप्त करने के लिए उपयोग कर सकते हैं।

    jQuery("#<portlet:namespace />username").val(); 
    
    // Or 
    
    jQuery("#<%= renderResponse.getNamespace() %>username").val(); 
    
  2. लेकिन मेरा सुझाव है कि यदि आप एक *.js फ़ाइल तो उपयोग कर रहे हैं आप js फ़ाइल में जावास्क्रिप्ट कार्य करने के लिए एक तर्क के रूप नाम स्थान पारित:

    function changeValues(portletNamespace) { // this function is in a js file 
        jQuery("#" + portletNamespace + "username").val("Lets change"); 
    } 
    

    JSP से इस कार्यप्रणाली को कॉल:

    <input type="button" onClick="changeValues('<portlet:namespace />')" /> 
    

आशा इस मदद करता है। मुझे नहीं पता कि namespace या portletId को सीधे Liferay द्वारा परिभाषित कुछ जावास्क्रिप्ट फ़ंक्शन के माध्यम से प्राप्त करने का कोई तरीका है या नहीं। अगर आपको ऐसा कुछ मिलता है तो आप इसे यहां पोस्ट कर सकते हैं और यह बहुत उपयोगी होगा।

4

इस प्रयास करें:

Liferay.Portlet.ready(

    /* 
    This function gets loaded after each and every portlet on the page. 

    portletId: the current portlet's id 
    node: the Alloy Node object of the current portlet 
    */ 

    function(portletId, node) { 
    } 
); 
संबंधित मुद्दे