2010-03-30 9 views
38

क्या Expression Language (ईएल) अभिव्यक्तियों का कोई तरीका है जावास्क्रिप्ट फ़ाइलों का मूल्यांकन जेएसएफ द्वारा किया जाना चाहिए?एक जावास्क्रिप्ट फ़ाइल में JSF EL को मिलाकर

मैं उम्मीद कर रहा था कि सीम के पास इसका रास्ता हो सकता है, लेकिन अब तक कोई भाग्य नहीं है। मैं चाहता हूं कि मैं अपने जावास्क्रिप्ट कार्यों में स्थानीय संदेशों का उपयोग कर सकूं जो पृष्ठों पर साझा किए जाते हैं।

+1

शामिल JavaScript फ़ंक्शन का एक उदाहरण पोस्ट करें। – lexicore

उत्तर

59

पांच उपाय:

  1. माता पिता JSF पेज में वैश्विक चर के रूप में यह घोषित।

    <script type="text/javascript" src="script.js"></script> 
    <script type="text/javascript"> 
        var messages = []; 
        <ui:repeat value="#{bean.messages}" var="message"> 
         messages['#{message.key}'] = '#{message.value}'; 
        </ui:repeat> 
    </script> 
    

    या, यदि यह पहले से ही JSON प्रारूप में है।

    <script type="text/javascript" src="script.js"></script> 
    <script type="text/javascript">var messages = #{bean.messagesAsJson};</script> 
    
  2. एक एक्सएचटीएमएल फ़ाइल में पूरे <script> रखो और ui:include का उपयोग शामिल करने के लिए।

    <script type="text/javascript" src="script.js"></script> 
    <ui:include src="script-variables.xhtml" /> 
    
  3. JspServlet (केवल अगर यह केवल ${} भाव का मूल्यांकन करने के लिए पर्याप्त है) के माध्यम से पारित *.js। जैसे web.xml (<servlet-name>JspServlet में web.xml में Servletcontainer में पाया जा सकता है, यह आमतौर पर jsp है)।

    <servlet-mapping> 
        <servlet-name>jsp</servlet-name> 
        <url-pattern>*.js</url-pattern> 
    </servlet-mapping> 
    
  4. संशोधित सामग्री प्रकार के साथ "अच्छा पुराना" जेएसपी का उपयोग करें। script.jsp को script.js नाम बदलें और JSP के शीर्ष में निम्नलिखित पंक्ति जोड़ (केवल अगर यह केवल ${} भाव का मूल्यांकन करने के लिए पर्याप्त है):

    <%@page contentType="text/javascript" %> 
    
  5. जे एस लोड होने के दौरान ajaxically डेटा प्राप्त करते हैं। यहां एक jQuery लक्षित उदाहरण है।

    $.getJSON('json/messages', function(messages) { 
        $.each(messages, function(key, value) { 
         $.messages[key] = value; 
        }); 
    }); 
    
+3

मैं जोड़ सकता हूं कि पहला सबसे आसान है। चेहरे को आपके लिए इसे संभालने दें। –

+1

धन्यवाद मैंने पहले इस्तेमाल किया। – user283680

+0

धन्यवाद। पता नहीं था कि मैं '

2

जब से मैं तकनीक है कि नहीं दूँगी ब्राउज़र कैश स्थानीय स्ट्रिंग्स पसंद नहीं है, मैं जावास्क्रिप्ट अलर्ट स्थानीय बनाना, आदि यह एक अच्छा फिट स्ट्रिंग्स अगर लगता है निम्न तकनीक का इस्तेमाल किया है कि आप अपने जावास्क्रिप्ट कोड में की जरूरत है वेब सर्वर द्वारा आवश्यक से भिन्न क्यों हैं:

<h:head> 
    <h:outputScript library="javascript" name="#{fw.JsFwStrings}" /> 
    ... 

मैं तो JavaScript फ़ाइल विशिष्ट भाषा के लिए स्थानीय तार को परिभाषित करने के लिए फ़ाइल नाम संसाधन स्ट्रिंग JsFwStrings आवंटित।

उदाहरण के लिए, fw_en.properties फ़ाइल प्रविष्टि शामिल JsFwStrings = JsFwStrings_en.js

और JsFwStrings_en.js फ़ाइल

var TosFramework = TosFramework || {}; 
TosFramework.Strings = { 
    UnSavedChangesWarning : 'You have unsaved changes.', 
    CancelConfirmQuestion : 'Are you sure you want to cancel?' 
}