2011-09-28 10 views
18

के अंदर तोड़ना मैं जेएसटीएल में फोरैच के अंदर "जारी रखें" डालना चाहता हूं। अगर इसे हासिल करने का कोई तरीका है तो कृपया मुझे बताएं।जेएसटीएल जारी है, फोरैच

<c:forEach 
    var="List" 
    items="${requestScope.DetailList}" 
    varStatus="counter" 
    begin="0"> 

    <c:if test="${List.someType == 'aaa' || 'AAA'}"> 
    <<<continue>>> 
    </c:if> 

मैं अगर हालत अंदर "जारी रखें" सम्मिलित करना चाहते हैं।

उत्तर

27

ऐसी कोई बात नहीं है। वास्तव में प्रदर्शित करने के लिए सामग्री को उलटा करें। तो

<c:forEach items="${requestScope.DetailList}" var="list"> 
    <c:if test="${list.someType eq 'aaa' or list.someType eq 'AAA'}"> 
     <<<continue>>> 
    </c:if> 
    <p>someType is not aaa or AAA</p> 
</c:forEach> 

नहीं करते बल्कि ऐसा

<c:forEach items="${requestScope.DetailList}" var="list"> 
    <c:if test="${not (list.someType eq 'aaa' or list.someType eq 'AAA')}"> 
     <p>someType is not aaa or AAA</p> 
    </c:if> 
</c:forEach> 

या

<c:forEach items="${requestScope.DetailList}" var="list"> 
    <c:if test="${list.someType ne 'aaa' and list.someType ne 'AAA'}"> 
     <p>someType is not aaa or AAA</p> 
    </c:if> 
</c:forEach> 

कृपया ध्यान दें कि मैं भी अपने कोड में किसी ईएल सिंटेक्स त्रुटि तय की।

+0

+1 आह - अब मैं समझता हूं कि वह क्यों जारी रखना चाहती थी। सवाल BalusC की अच्छी व्याख्या! – CoolBeans

+0

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

+0

ठोस तर्क के साथ प्रश्न को संपादित करने के लिए स्वतंत्र महसूस करें। – BalusC

2

या आप ईएल का उपयोग कर सकते बयान

<c:forEach 
     var="List" 
     items="${requestScope.DetailList}" 
     varStatus="counter" 
     begin="0"> 

     <c:choose> 
     <c:when test="${List.someType == 'aaa' || 'AAA'}"> 
      <!-- continue --> 
     </c:when> 
     <c:otherwise> 
      Do something...  
     </c:otherwise> 
     <c:choose> 
    </c:forEach> 
3

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

<c:forEach var="apple" items="${apples}" varStatus="status"> 
    <c:if test="${apple eq pear}"> 
     ...do stuff with this apple... 
     <c:set var="status.index" value="${items.size}"/> <%-- 'break' out of loop --%> 
     ... stuff here will still be evaluated... 
    </c:if> 
    ... stuff here will still be evaluated... 
</c:forEach> 

आप करने के लिए अपने को तोड़ने की जरूरत नहीं है तो अगर कुछ कोड छोड़ें, यह अभी भी आपके लिए उपयोगी हो सकता है। सामान्य रूप से यह लूप के अंदर लूप इंडेक्स को संशोधित करने के लिए बीएडी-एमके है, लेकिन यह ठीक है।

+0

मैंने इस दृष्टिकोण की कोशिश की, लेकिन यह मेरे लिए काम नहीं किया। मैंने जांच की, और 'status.index' वास्तव में'

0

मैं इसे पाश

<c:set var="continueExecuting" scope="request" value="false"/> 

तो की मेरी निष्पादन योग्य कोड के अंत में और अंदर सेट का उपयोग मुझे लगता है कि चर उपयोग किए थे अगले चरण में कोड के निष्पादन को छोड़ने के लिए हल

<c:if test="${continueExecuting}"> 

आप इसे वापस सही करने के लिए किसी भी समय निर्धारित कर सकते हैं ...

<c:set var="continueExecuting" scope="request" value="true"/> 

इस टैग को के बारे में अधिक: 012,

आनंद लें!