2011-03-01 11 views
8

अंदर स्क्रिप्टलेट उपयोग करने के लिए किसी को इस उदाहरण का परीक्षण करने और परिणामों को साझा कर सकते हैं? http://timothypowell.net/blog/?p=23
जब मैं कार्य करें:कैसे जावास्क्रिप्ट

var myVar = '<% request.getContextPath(); %>'; 
alert(myVar); 

मैं: '<% request.getContextPath(); %>'.

<% request.getContextPath से 'संलग्न एकल उद्धरण निकाला जा रहा है(); %> '; वाक्यविन्यास त्रुटि देता है। मैं जेएस फ़ंक्शन के अंदर स्क्रैप्लेट या एक्सप्रेशन का उपयोग कैसे कर सकता हूं?

संपादित करें:
http://www.codingforums.com/showthread.php?t=172082

+0

आपने यह कोड कहां रखा? यदि आप जेएसपी टैग वापस प्राप्त कर रहे हैं, तो इसका मतलब है कि फ़ाइल को सर्वर द्वारा संसाधित नहीं किया जा रहा है। क्या यह एक '.jsp' फ़ाइल है और क्या आपका सर्वर उन्हें संभालने के लिए कॉन्फ़िगर किया गया है? – casablanca

+0

यदि यह जेएसपी, ईआरबी या इसी तरह है, तो मुझे लगता है कि आपको आउटपुट के लिए '=' की आवश्यकता होगी: 'var myVar =' <% = request.getContextPath(); %> '; ' –

उत्तर

3

ऐसा लगता है कि आप एक जावास्क्रिप्ट पृष्ठ के भीतर JSP कोड दे रहे हैं, या कम से कम एक गैर JSP पेज में। स्क्रिप्टलेट को केवल एक जेएसपी पृष्ठ में शामिल किया जा सकता है (आमतौर पर * .jsp होने के लिए कॉन्फ़िगर किया गया)।

बयान के रूप में प्रस्तुत किया, अगर JSP कम्पाइलर द्वारा संसाधित, स्क्रिप्टलेट प्रारूप आप <% उपयोग कर रहे हैं के रूप में '' के बराबर किया जा रहा myVar में परिणाम होगा ...% > टैग के बीच जावा कोड निष्पादित करता है, लेकिन वापस नहीं करता है एक परिणाम।

तो, इस टैग का उपयोग करने के लिए आपको अनुरोध आउटपुट स्ट्रीम में मैन्युअल रूप से एक मान लिखना होगा। वांछित कार्यशीलता आप निम्नलिखित करने की ज़रूरत है पाने के लिए:

make sure your code is in a JSP page 
    use var myVar = '<%= request.getContextPath() %>'; (note the equals sign) 
कि सभी ने कहा कि साथ

, scriptlets ज्यादातर मामलों में बुरा व्यवहार के रूप में देखा जाता है। ज्यादातर मामलों के लिए, आपको जेएसटीएल अभिव्यक्तियों और कस्टम टैग का उपयोग करना चाहिए।

5

कोड का वह लाइन है एक .jsp फ़ाइल में एक HTML <script> टैग में रखा जाना करने के लिए: इस लिंक एक व्याख्या है कि मुझे मदद की है। इस प्रकार JspServlet स्क्रिप्टलेट (और अन्य जेएसपी/ईएल विशिष्ट अभिव्यक्तियों) को संसाधित करेगा।

<script>var myVar = '<%= request.getContextPath() %>';</script> 

ध्यान दें कि <%= %> सही वाक्य रचना एक चर मुद्रित करने के लिए है, <% %> कि नहीं करता है।

या अगर यह एक स्टैंडअलोन .js फ़ाइल में परोसा जा करने का इरादा है, तो आप .jsp लिए इसका नाम बदलना और फ़ाइल के शीर्ष करने के लिए निम्न जोड़ने (और <script src> यूआरएल उसके अनुसार बदल) की जरूरत है:

<%@page contentType="text/javascript" %> 
... 
var myVar = '<%= request.getContextPath() %>'; 

इस तरह JspServlet यह कार्रवाई करेंगे और ब्राउज़र जावास्क्रिप्ट के बजाय HTML के रूप में JSP प्रतिक्रिया शरीर की व्याख्या करने के निर्देश दिए जाएंगे।


ठोस समस्या से संबंधित नहीं, ध्यान दें कि scriptletspoor practice माना जाता है। ईएल का प्रयोग करें।

var myVar = '${pageContext.request.contextPath}'; 
0
var myVar = '<%=request.getContextPath() %>'; 
alert(myVar); 

आप अनुरोध से पहले = निकालने के लिए भूल गए हैं; getContextPath के बाद()

1

आप नहीं scriptletjavascript अंदर यह सामान्य .js विस्तार देकर चला सकते हैं। हालांकि आप अपने .js रूप .jsp की फाइल एक्सटेंशन और उसके बाद और यह करने के लिए सीधे लिंक दे सकते हैं:

<script type="text/javascript" src="/script.jsp"></script> 

और अब आप के भीतर अपने javascript तरह jsp उपयोग कर सकते हैं:

var someMessage = "${someMessage}" 
var anotherMessage = "${anotherMessage}"/>" 

यह कार्रवाई पूरी तरह से वैध है क्योंकि यह निर्धारित करता है कि फ़ाइल javascript फ़ाइल है या नहीं, एमआईएम मीडिया प्रकार क्या है। आप जेएसपी से एमआईएमई का उपयोग कर सेट कर सकते हैं:

<%@ page contentType="text/javascript" %> 
संबंधित मुद्दे