JSTL के साथ एक संग्रह आकार की जाँच करें


जवाबों:


430
<c:if test="${companies.size() > 0}">

</c:if>

यह सिंटैक्स केवल EL 2.2 या नए (सर्वलेट 3.0 / JSP 2.2 या नए) में काम करता है। यदि आप XML पार्सिंग त्रुटि का सामना कर रहे हैं क्योंकि आप JSP के बजाय JSPX या फेसलेट का उपयोग कर रहे हैं, तो gtइसके बजाय का उपयोग करें >

<c:if test="${companies.size() gt 0}">

</c:if>

यदि आप वास्तव में ईएल पार्सिंग त्रुटि का सामना कर रहे हैं, तो आप शायद बहुत पुराने ईएल संस्करण का उपयोग कर रहे हैं। आपको fn:length()तब JSTL फ़ंक्शन की आवश्यकता होगी । से प्रलेखन :

लंबाई (java.lang.Object) - एक संग्रह में वस्तुओं की संख्या, या एक स्ट्रिंग में वर्णों की संख्या देता है।

fnनाम स्थान की अनुमति देने के लिए इसे JSP पृष्ठ के शीर्ष पर रखें :

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

या यदि आप JSPX या फेसलेट का उपयोग कर रहे हैं:

<... xmlns:fn="http://java.sun.com/jsp/jstl/functions">

और अपने पेज में इस तरह का उपयोग करें:

<p>The length of the companies collection is: ${fn:length(companies)}</p>

तो एक संग्रह की लंबाई के साथ परीक्षण करने के लिए:

<c:if test="${fn:length(companies) gt 0}">

</c:if>

वैकल्पिक रूप से, इस विशिष्ट मामले के लिए आप बस EL emptyऑपरेटर का उपयोग कर सकते हैं :

<c:if test="${not empty companies}">

</c:if>

47
बस यह नोट करना चाहता था कि यदि संग्रह प्राप्त करने के लिए आकार निर्धारित करने की आवश्यकता है यदि संग्रह खाली नहीं है, तो "खाली" ऑपरेटर उपयोगी है क्योंकि यह शून्य के लिए भी जाँच करता है।
जोएल

मैं यहां मार्क से सहमत हूं। क्यों एक टैग के लिए अपने पृष्ठ में अधिक cruft आयात करें? मार्क के समाधान का उपयोग करें, यह क्लीनर है।
ResourceReaper

सहमत - खाली क्लीनर है। @ जोएल को एक पूर्ण उत्तर के रूप में पोस्ट करना चाहिए ताकि इसे वोट दिया जा सके और स्वीकार किया जा सके। हम में से बहुत से यहाँ (me) गैर-jsp प्रोग्रामर हैं जो Google और SO से एक साथ स्निपेट को कॉपी / पेस्ट करते हैं, जो कि हमारे देखे गए कोड के पहले भाग से परे बहुत अधिक सोचा जाता है।
जोश

9
ओपी ने आकार की जाँच के बारे में पूछा, जरूरी नहीं कि जाँच के बारे में कि यह खाली है, मेरा जवाब भी अधिक जटिल परिदृश्यों को उपलब्ध पूर्ण टैग लाइब्रेरी के साथ चिंतन करने की अनुमति देता है।
मार्तुलक

कंपनियों को एक var होना चाहिए, जो कि एक परम नहीं है, अन्यथा आपको इसे परिभाषित करना होगा, जैसे ATG के लिए - <dsp: getvalueof var = "companies" param = "arrayParam" />
Andriy Boyko

30

जैसा कि @Joel और @ मर्क चोरले ने पूर्व टिप्पणियों में सुझाया है:

${empty companies}

यह अशक्त और रिक्त सूचियों / संग्रहों / सरणियों के लिए जाँच करता है। यह आपको लंबाई नहीं देता है लेकिन यह ओपी में उदाहरण को संतुष्ट करता है। यदि आप इसके साथ भाग सकते हैं तो यह टैग लाइब्रेरी और इसके क्रस्टी सिंटैक्स की तरह आयात करने से साफ है gt



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.