JSTL में if-else विकल्प का उपयोग कैसे करें


जवाबों:


521

हाँ, लेकिन यह नरक के रूप में स्पष्ट है, उदा

<c:choose>
  <c:when test="${condition1}">
    ...
  </c:when>
  <c:when test="${condition2}">
    ...
  </c:when>
  <c:otherwise>
    ...
  </c:otherwise>
</c:choose>

5
आवरण टैग (चयन) के अलावा, मैं नहीं देखता कि यह कैसे / ifif / बाकी होगा की तुलना में किसी भी अधिक क्रिया है। एक रैपर टैग मुश्किल से 'क्लंकी के रूप में नरक' का गठन करता है, नहीं?
स्टीवन बेनिटेज़

19
@ उत्तर: यह XML की प्रकृति है। बायलरप्लेट में अधिक वर्ण हैं, वास्तविक तर्क में है।
skaffman

2
आह अच्छा। वही <c:if/>तब के लिए भी सेट किया जा सकता है।
स्टीवन बेनिटेज़

15
मुझे पता है कि मुझे पार्टी में थोड़ी देर हो गई है, लेकिन <c:otherwise>थोड़ा वर्बोज़ लगता है, एह?
एंड्रोइकस

6
उपयुक्त इंडेंटेशन और क्लंकी के साथ नेस्टिंग लॉजिक शुरू करें क्योंकि नरक बहुत अधिक विवरण वाला होगा।
एडम टोली 5'13

105

स्कैफ़मैन उत्तर के साथ, सरल अगर-नहीं तो आप इस तरह से टर्नरी ऑपरेटर का उपयोग कर सकते हैं

<c:set value="34" var="num"/>
<c:out value="${num % 2 eq 0 ? 'even': 'odd'}"/>

6
यह एक अच्छा जवाब है, लेकिन यह कितना उपयोगी होगा, इसके लिए अत्यधिक स्थितिजन्य है।
माइक एल.पी.

47

कोई और नहीं है, बस अगर।

<c:if test="${user.age ge 40}">
 You are over the hill.
</c:if>

वैकल्पिक रूप से आप चुन-का उपयोग कर सकते हैं:

<c:choose>
  <c:when test="${a boolean expr}">
    do something
  </c:when>
  <c:when test="${another boolean expr}">
    do something else
  </c:when>
  <c:otherwise>
    do this when nothing else is true
  </c:otherwise>
</c:choose>

हाय @iwxfer, आपका उपरोक्त लिंक अभी उपलब्ध नहीं है, कृपया अपडेट करें, यदि आप अच्छा स्कोर कर सकते हैं, तो अन्य बुद्धिमान इसे हटा दें।
अजय

25

मैं केवल दो का उपयोग करके दूर हो गया अगर टैग, सोचा कि मैं किसी और के लिए उपयोग करने के मामले में एक जवाब जोड़ दूंगा:

<c:if test="${condition}">
  ...
</c:if>
<c:if test="${!condition}">
  ...
</c:if>

तकनीकी रूप if-elseसे प्रति सेग्मेंट नहीं होने के दौरान , व्यवहार समान है और chooseटैग का उपयोग करने के क्लंकी दृष्टिकोण से बचा जाता है , इसलिए आपकी आवश्यकता कितनी जटिल है, इस पर निर्भर करता है।


1
जब स्थिति कुछ जटिल और बदसूरत है जैसे $ {नहीं param.age gt 42 और someOtherVar eq 'foobar'} पर विचार करें। आपको स्थिति को एक अस्थायी बूलियन चर में स्टोर करना होगा ताकि आप कर सकें! हालत, या उस स्थिति का उलटा लिख ​​सकते हैं। दोनों कुरूप। "अन्यथा" वाक्यविन्यास एक गारंटीकृत प्रतिलोम है।
मैट

3
वास्तव में एक जटिल स्थिति के लिए या तो एक स्थानीय चर की आवश्यकता होती है या उलटा लिखना होता है, लेकिन यह दोनों विकल्प अभी भी काम करेंगे। मैंने स्पष्ट किया कि यह इस बात पर निर्भर करेगा कि chooseटैग के मुकाबले यह दृष्टिकोण कितना जटिल है ।
जोंक

2
मैं इससे सहमत हु। यदि आपके पास केवल एक और है, तो इसका कम मार्कअप है तो c का उपयोग करें: चुनें
javaMoca

1
<C: if test = "$ {condition} == true"> और <c: if test = "$ {condition == false}"> होने का एक और अतिरिक्त लाभ है। जब चर शून्य है (प्रारंभिक नहीं), तो न तो शाखा निष्पादित होती है, जो अच्छा है। यदि आप <c: select> और <c: जब> के साथ जाते हैं, तो झूठी शाखा निष्पादित होगी जब चर शून्य है।
स्टीव स्टिलसन

3

आपको इस कोड का उपयोग करना होगा:

साथ में <%@ taglib prefix="c" uri="http://www.springframework.org/tags/form"%>

तथा

<c:select>
            <option value="RCV"
                ${records[0].getDirection() == 'RCV' ? 'selected="true"' : ''}>
                <spring:message code="dropdown.Incoming" text="dropdown.Incoming" />
            </option>
            <option value="SND"
                ${records[0].getDirection() == 'SND'? 'selected="true"' : ''}>
                <spring:message code="dropdown.Outgoing" text="dropdown.Outgoing" />
            </option>
        </c:select>

-1

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

   <c:choose>
      <c:when test="${condtion1}">
        do something condtion1
      </c:when>
      <c:when test="${condtion2}">
        do something condtion2
      </c:when>
      ......
      ......
      ...... 
      .......

      <c:when test="${condtionN}">
        do something condtionn N
      </c:when>


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