2010-04-12 10 views
16

यह मानते हुए कि requestScope.importMe एक JSP फ़ाइलजेएसपी में इसे शामिल/आयात करने से पहले आप कैसे जांच सकते हैं कि फ़ाइल मौजूद है या नहीं?

<c:choose> 
    <c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }"> 
    <c:import url="${requestScope.importMe}" /> 
    ... 
</c:choose> 

मैं कैसे जांच कर सकते हैं अगर यह शामिल करने के लिए इतना है कि एक त्रुटि फेंक नहीं है प्रयास करने से पहले फ़ाइल मौजूद है करने के लिए एक रास्ता उम्मीद कर रही है?

मैं जेएसटीएल टैग का उपयोग कर एक समाधान पसंद करूंगा।

उत्तर

21

इसे c:catch टैग में रखें। यह आपके लिए Exception फेंक देगा।

<c:catch var="e"> 
    <c:import url="${url}" /> 
</c:catch> 
<c:if test="${!empty e}"> 
    Error: ${e.message} 
</c:if> 

मैं हालांकि स्वीकार करना चाहिए कि मैं c:catch दृष्टिकोण पसंद नहीं है। प्रवाह को नियंत्रित करने के लिए अपवादों का दुरुपयोग है। यदि आप कर सकते हैं, तो File#exists() (और ServletContext#getRealPath()) की सहायता से, इस नौकरी को सर्वलेट या JavaBean में करें।

+0

हाय @ बालससी! मैं आपके उत्तर में दिए गए कार्यान्वयन की तलाश भी कर रहा हूं। मैं एसओ पदों पर खोज करता हूं, लेकिन मुझे लगता है कि आपकी जरूरतों को लागू करने का आपका सबसे आसान तरीका है और मुझे यकीन है कि पहले से पूछे गए कुछ के बारे में कोई प्रश्न फिर से बनाना है। मुझे एक जेएसटीएल में एक गतिशील यूआरएल में आयात करने की आवश्यकता है: मैं एक विशिष्ट क्षेत्र के यूआरएल को लोड करने का प्रयास करता हूं (उदाहरण: ./3/myJspx.jspx, और यदि फ़ाइल नहीं मिल पाती है, तो यह डिफ़ॉल्ट क्षेत्र jspx पर फ़ॉलबैक: ./myJspx .jspx .. यह देखते हुए कि ज्यादा समय अपने जवाब से पारित कर दिया है, इस बीच, आप किसी अन्य समाधान के साथ अपने स्वयं जावा बनाने इस stackOverflow सवाल ... http से वर्णन किया गया पर आया है या आप किसी भी अन्य संकेत मिल गया है – gipinani

4

@ बाल्लूसी काफी चालाक है, और शायद सवाल का जवाब देता है।

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

जे 2 ईई 1.4 ट्यूटोरियल में अपने स्वयं के ईएल कार्यों को बनाने पर section है।

+0

विवरण: //stackoverflow.com/questions/16788790/include-css-file-in-jsp-only-if-it-exist –

+0

@WillHartung: अब अभ्यास अनुभाग में आप की बात कर रहे थे करने के लिए नीचे (मुझे लगता है कि) ऊपर अनुभाग लिंक क्या आप प्रश्न में उत्तर का मुख्य भाग शामिल कर सकते हैं यदि यह बहुत बड़ा नहीं है, या लिंक को ठीक करें? – yochannah

संबंधित मुद्दे

 संबंधित मुद्दे