2011-04-10 18 views
6

मैं जावा Facelets और jQuery का उपयोग कर रहा है, तथापि अभिव्यक्ति

$('...') 
ईएल अभिव्यक्ति के साथ jQuery संघर्ष में

, मैं jQuery के एक कैसे बच सकता हूँ?

मैं भी जावास्क्रिप्ट का एक बड़ा हिस्सा बचाना चाहता हूं।

उत्तर दिए

Facelets एक्सएचटीएमएल करने के लिए मौजूदा JSP बदलने के लिए, यह सिर्फ <![CDATA[ ... ]]> द्वारा मौजूदा जावास्क्रिप्ट रैप करने के लिए सुविधाजनक है। हालांकि, <script> के लिए उत्पादन लिपियों <!-- --> टिप्पणी है, जो CDATA अनुभाग का विरोध से लिपटे रहे हैं:

<script>/* <![CDATA[ */ scripts... /* ]]> */</script> 

=> <script><!-- /* <![CDATA[ */ scripts... /* ]]> */--></script> 

भी When is a CDATA section necessary within a script tag? देखें:

<script><![CDATA[ scripts... ]]></script> 

=> <script><!-- <![CDATA[ scripts... ]]> --></script> 

इस समस्या को हल करने के लिए, आप भी CDATA बाहर टिप्पणी करना चाहिए।

+0

अपने अद्यतन के अनुसार, वास्तविक समस्या स्पष्ट आता है: यदि आप एक XML फ़ाइल में जे एस कोड कच्चे लिख रहे हैं और XML पार्सर जो होना चाहिए '' $ से अधिक गिर रही है '&' के रूप में दर्शाया गया है। बदसूरत 'सीडीएटीए 'वर्कअराउंड के अलावा, सबसे अच्छा समाधान जेएस कोड को अपनी' .js' फ़ाइल में रखना है। आखिरकार, प्रश्न शीर्षक और शरीर वास्तविक समस्या का वर्णन नहीं करता है और इसलिए भ्रमित है। – BalusC

उत्तर

3

यह सामान्य रूप से संघर्ष नहीं होना चाहिए। ईएल ${} वाक्यविन्यास का उपयोग करता है। वैसे भी, आप या तो jQuery() का उपयोग कर सकते हैं ($() सिर्फ एक शॉर्टेंड है) या बस जेएस कोड को अपने .js फ़ाइल में डाल दें।

11

किसी की जरूरत पड़े तो Expression Language Specification Version 2.2 Maintenance Release बताता है कि कैसे ईएल भाव से बचने के लिए:

शाब्दिक मानों चरित्र अनुक्रम में शामिल हैं उत्पन्न करने के लिए "${" या "#{", डेवलपर के रूप में एक समग्र अभिव्यक्ति का उपयोग करने के लिए चुन सकते हैं यहाँ दिखाया गया है:

${'${'}exprA} 
#{'#{'}exprB} 

जिसके परिणामस्वरूप मूल्यों तोहोगास्ट्रिंग्स ${exprA} और #{exprB}

वैकल्पिक रूप से, बच पात्रों \$ और \# से बचने के लिए क्या अन्यथा एक eval अभिव्यक्ति माना जाएगा इस्तेमाल किया जा सकता। यह देखते हुए शाब्दिक-भाव:

\${exprA} 
\#{exprB} 
संबंधित मुद्दे