2010-11-08 10 views
7

जावास्क्रिप्ट के अंदर jstl का उपयोग करना संभव है?jstl जावास्क्रिप्ट

मैं <c:set var="abc" value="yes"/>

स्थापित करने के लिए और फिर बाद में html में इस मूल्य का उपयोग और कुछ कोड निष्पादित बांधने कर रहा हूँ। मेरी समस्या सी है: सेट जावास्क्रिप्ट की स्थिति झूठी है, भले ही सेट हमेशा निष्पादित हो रहा है।

<script type="text/javascript"> 
var v1 = false; 
<c:set var"abc" value="yes"/> 

if(v1){ 
    <c:set var"abc" value="no"/> 
} 
</script> 

उपर्युक्त कोड में, भले ही v1 गलत है 'नहीं' abc पर सेट है।

+2

पढ़ें यह: बिंदु करने के लिए http://balusc.blogspot.com/2009/05/javajspjsf-and-javascript.html: जावा/JSP/JSTL/ईएल वेबसर्वर पर चलाता है और पैदा करता है HTML/CSS/जे एस। वेबसर्वर वेबब्रोसर को एचटीएमएल/सीएसएस/जेएस भेजता है। Webbrowser एचटीएमएल/सीएसएस/जेएस पुनर्प्राप्त करता है और इसे निष्पादित करता है। यदि जावा ने अपना कार्य सही किया है, तो वेबब्रोसर को जावा/जेएसपी/जेएसटीएल/ईएल कोड की किसी भी पंक्ति को पुनर्प्राप्त नहीं करना चाहिए था। बस क्योंकि यह समझ में नहीं आता है। – BalusC

+0

कि एक अच्छा ब्लॉग था ... – coder247

उत्तर

18

सर्वर-साइड जेएसपी व्याख्या के बारे में बात करते समय "जावास्क्रिप्ट के अंदर" होने के विचार का कोई अर्थ नहीं है। जहां तक ​​उस डोमेन का संबंध है, जावास्क्रिप्ट जैसी कोई चीज़ नहीं है।

इस प्रकार, हाँ, यह संभव है अगर आप का मतलब है कि आप की तरह

var something = '${abc}'; 

नोट आप के हवाले से और विशेष वर्णों के साथ सावधान रहना होगा कि कुछ करना चाहता हूँ है,। जेएसटीएल fn:escapeXml() फ़ंक्शन बेकार है जब आप पृष्ठ के किसी हिस्से में जेएसपी वैरिएबल को इंटरपोल कर रहे हैं जिसे ब्राउजर द्वारा जावास्क्रिप्ट स्रोत के रूप में व्याख्या किया जाएगा। आप या तो अपने तारों को एन्कोड करने के लिए JSON लाइब्रेरी का उपयोग कर सकते हैं, या आप इसे करने के लिए अपना स्वयं का ईएल फ़ंक्शन लिख सकते हैं।

4

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

एचटीएमएल (या जेएसपी) फ़ाइल बाहरी फ़ाइल के अंदर पाठ को जावास्क्रिप्ट स्रोत के रूप में घोषित करती है।

टोमकैट (या इसी तरह) केवल जेएसटीएल टैग की व्याख्या .jsp एक्सटेंशन (या शायद कुछ अन्य लोगों के साथ) में भी है, लेकिन यह इस उत्तर के लिए अप्रासंगिक है)।

तो, अपने .js फ़ाइल का नाम बदलें यह एक .jsp विस्तार (javascript.js उदाहरण के लिए javascript_js.jsp करने के लिए)

javascript_js.jsp के शीर्ष पर उन पंक्तियों के जोड़े को देने के लिए:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

और बस कोड को अपरिवर्तित छोड़ दें।

जाहिर है, यदि आप हेडर में सी के अलावा किसी अन्य का उपयोग करते हैं तो आपको और अधिक उपसर्ग जोड़ना होगा।

यदि आप एक्लिप्स (अन्य आईडीई के बारे में नहीं जानते) का उपयोग करते हैं, तो यह मान लेंगे कि यह जावास्क्रिप्ट फ़ाइल नहीं है और आप अलग-अलग कीवर्ड (var, फ़ंक्शन और इतने पर) के लिए रंग योजना खो देते हैं, var name ऑटो पूर्णता और ऑटो इंडेंटेशन।

, आईडीई मूर्ख के लिए आप एक js टिप्पणी के रूप में

// <script> 

जोड़ सकते हैं, वास्तविक कोड से पहले ("<% @" घोषणाओं के बाद), और

// </script> 
अंत में

फाइल के, फिर एक जेएस टिप्पणी के रूप में।

यह मेरे लिए काम किया।

3
<script> 
    <c:set var="myVal" value="Hello"/> 

    var val1="${myVal}"; 

</script> 
संबंधित मुद्दे