Jstl में foreach loop से इंडेक्स वैल्यू कैसे प्राप्त करें


106

मेरे पास requestनिम्न जैसे ऑब्जेक्ट में एक मान सेट है ,

String[] categoriesList=null;
categoriesList = engine.getCategoryNamesArray();
request.setAttribute("categoriesList", categoriesList );

और यह है कि मैं कैसे jsp पृष्ठ में iterate

<% if(request.getAttribute("categoriesList") != null) { %>
<c:forEach var="categoryName" items="${categoriesList}">
   <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
</c:forEach>
<% }%>

मैं प्रत्येक तत्व का सूचकांक कैसे प्राप्त करूं और इसे जावास्क्रिप्ट फ़ंक्शन में पास करूं onclick="getCategoryIndex()"

जवाबों:


234

varStatus का उपयोग इंडेक्स c प्राप्त करने के लिए करें : varStatus प्रॉपर्टीज का उपयोग करें

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>

मुझे लगता Uncaught ReferenceError: है कि आपके प्रयास के लिए यह लूप परिभाषित नहीं है `और +1
जावा प्रश्न

प्रदर्शित तत्व पर क्लिक करें
जावा प्रश्न

क्योंकि varStatus मान में लूप पुनरावृत्ति तक मान होता है। उसके बाद मान मान्य नहीं है। तो केवल आपको अपवाद मिला। किस प्रयोजन के लिए आपको सूचकांक की आवश्यकता है
newuser

मुझे स्ट्रिंग एरे में आने वाले प्रत्येक तत्व के सूचकांक [स्थान] को जानने की आवश्यकता है।
जावा प्रश्न

यह काम करता है :) अगर मैं इस तरह से करता हूँ onclick = "getCategoryIndex ($ {loop.index})" ... मदद के लिए धन्यवाद
Java प्रश्न

19

मैं इसी तरह की समस्या का सामना करता हूं अब मैं समझता हूं कि हमारे पास कुछ और विकल्प हैं: varStatus = "loop", यहाँ लूप वेरिएबल होगा जो lop के इंडेक्स को रखेगा।

यह Zeor बेस इंडेक्स या 1 एक बेस इंडेक्स के लिए पढ़ने के लिए उपयोग के लिए उपयोग कर सकता है।

${loop.count}` it will give 1 starting base index.

${loop.index} it will give 0 base index as normal Index of array 0 से शुरू करें।

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

<c:forEach var="currentImage" items="${cityBannerImages}" varStatus="loop">
<picture>
   <source srcset="${currentImage}" media="(min-width: 1000px)"></source>
   <source srcset="${cityMobileImages[loop.count]}" media="(min-width:600px)"></source>
   <img srcset="${cityMobileImages[loop.count]}" alt=""></img>
</picture>
</c:forEach>

अधिक जानकारी के लिए कृपया इस लिंक को देखें


11

आप varStatusइस तरह की विशेषता का उपयोग कर सकते हैं : -

<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">

myIndex.index आपको इंडेक्स देगा। यहाँ myIndexएक LoopTagStatus ऑब्जेक्ट है।

इसलिए, आप अपनी जावास्क्रिप्ट विधि को इस तरह भेज सकते हैं: -

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

मुझे Uncaught ReferenceError: myIndex is not defined आपके प्रयास के लिए यह और +1 मिलता है
Java प्रश्न

0
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

ऊपर की लाइन मुझे एक त्रुटि दे रही थी। इसलिए मैंने नीचे तरीके से लिखा जो मेरे लिए ठीक काम कर रहा है।

<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>

हो सकता है कि किसी और को भी यही त्रुटि मिले। इस लड़के को देखो!


0

यह मेरे लिए काम करता है:

<c:forEach var="i" begin="1970" end="2000">
    <option value="${2000-(i-1970)}">${2000-(i-1970)} 
     </option>
</c:forEach>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.