2011-10-17 15 views
16

मैं कुछ जेएसटीएल वैरिएबल तक पहुंचने की कोशिश कर रहा हूं जो एक जेएसटीएल फॉर-लूप पर शामिल हैं।पासिंग सी: प्रत्येक चर के लिए एक जेएसपी:

उदाहरण:

<c:forEach items="${cart.entries}" var="entry"> 
<jsp:include page="helper.jsp"></jsp:include> 
</c:forEach> 

helper.jsp मैं संदर्भ के लिए चर 'प्रवेश' सक्षम होना चाहते हैं के अंदर। यह 'खाली' के रूप में आ रहा है। मैंने सोचा कि शायद प्रत्येक चर के लिए स्कोप जोड़ने का एक तरीका हो सकता है जैसे आप सामान्य सेट चर के साथ कर सकते हैं।

कोई विचार?

उत्तर

25

उत्तर: मैं इसे काम करने के लिए बस ऐसा करने के लिए समाप्त हुआ।

<c:forEach items="${cart.entries}" var="entry"> 
<c:set var="entryFC" value="${entry}" scope="request"></c:set> 
<jsp:include page="helper.jsp"></jsp:include> 
</c:forEach> 

फिर मैंने अपने शामिल में एंट्रीएफसी का संदर्भ दिया। बिल्कुल काम नहीं कर रहा है लेकिन यह काम कर रहा है, इसलिए मुझे लगता है कि बीमार इसके साथ जाना है।

+11

मैं एक और अधिक सुरुचिपूर्ण तरीके से देख रहा था, लेकिन ऐसा करने के लिए समाप्त हो गया। वैसे, आपको चर का नाम बदलने की आवश्यकता नहीं है: ' 'ठीक काम करता है और कम भ्रमित होने की संभावना है । – Dmitri

0

मुझे पता है कि इस प्रश्न का उत्तर देने में बहुत देर हो चुकी है, लेकिन जो इस स्थिति में फंस गए हैं और जवाब खोज रहे हैं, उनके लिए सहायक हो सकते हैं।

मेरा उत्तर काम करेगा यदि आप jsp शामिल करने के लिए <jsp: include> टैग का उपयोग करने के लिए कड़े बाध्य नहीं हैं। इसके बजाय, आप पेज में एक और जेएसपी आयात करने के लिए <%@include file="/WEB-INF/views/path-to-jsp.jsp" %> का उपयोग कर सकते हैं और यह पृष्ठ आपके <c:forEach> टैग लूपिंग चर का उपयोग कर सकता है।

उदाहरण के लिए।

<c:forEach items="${users}" var="user"> 

    <%@include file="/WEB-INF/views/path-to-jsp.jsp" %> <!-- here ${user} can be use in importing jsp file. --> 
</c:forEach> 

यह काम कर रहा है क्योंकि <%@include file="" %> टैग, टैग वाले JSP में नामित फ़ाइल की सामग्री इंजेक्षन होगा जैसे कि वह प्रतिलिपि बनाई गई थी और चिपकाया। यह शामिल किया गया है कि शामिल फ़ाइल की सामग्री को पार्स किया गया है, इसके बजाय इसमें जेएसपी को पार्स किया गया है। यह एक सी # अंतर्निहित निर्देश के समान है, जहां फ़ाइल को संकलित करने से पहले शामिल फ़ाइल को प्री-प्रोसेसिंग के दौरान "पेस्ट" किया जाता है। सामग्री को शामिल करने के बाद, मूल्यांकन किया जाता है, सभी एक ही संदर्भ में, और इसलिए उसी एक्सेस और बाधाओं के साथ शामिल कोड में होगा यदि सामग्रियों को आसानी से टाइप किया गया हो।

जबकि, <jsp:include page=""/> टैग अलग-अलग व्यवहार करता है जिसमें निर्दिष्ट पृष्ठ को प्रस्तुत करने के परिणाम टैग के बिंदु पर युक्त जेएसपी में इंजेक्शन दिए जाते हैं। यह अनिवार्य रूप से अनुरोधित पृष्ठ को उसी कंटेनर में सबमिट करके किया जाता है, एक अलग प्रतिपादन अनुरोध के रूप में, और परिणाम लेना, फ़ाइल की सामग्री नहीं। यह अनुरोध अपने संदर्भ में किया जाता है, जिसका अर्थ है कि यह उसी पृष्ठ की जानकारी का उपयोग उस पृष्ठ के रूप में नहीं करता है जिसमें टैग है। यह आसान हो सकता है, विशेष रूप से यदि शामिल सामग्री में विरोधाभासी चर हो सकते हैं, उदाहरण के लिए।