<c:choose> जावा switch स्टेटमेंट की तरह काम करता है जिसमें यह आपको कई विकल्पों के बीच चयन करने देता है। जहां switch स्टेटमेंट में case स्टेटमेंट्स होते हैं, वहीं <c:choose> टैग में <c:when> टैग्स होते हैं। जिस तरह एक switch स्टेटमेंट में डिफ़ॉल्ट एक्शन निर्दिष्ट करने के लिए default क्लॉज होता है, <c:choose> में डिफ़ॉल्ट क्लॉज के रूप में <c:otherwise> होता है।
एट्रिब्यूट्स
<c:choose> टैग का कोई एट्रिब्यूट नहीं होता।
<c:when> टैग का एक एट्रिब्यूट होता है जो नीचे सूचीबद्ध है।
<c:otherwise> टैग का कोई एट्रिब्यूट नहीं होता।
<c:when> टैग में निम्नलिखित एट्रिब्यूट्स होते हैं:
| एट्रिब्यूट | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
| test | मूल्यांकन की जाने वाली शर्त | हाँ | कोई नहीं |
उदाहरण
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>Your salary is : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
Salary is very low to survive.
</c:when>
<c:when test="${salary > 1000}">
Salary is very good.
</c:when>
<c:otherwise>
No comment sir...
</c:otherwise>
</c:choose>
</body>
</html>
आउटपुट
Your salary is : 4000 Salary is very good.
मुख्य बिंदु
- पारस्परिक रूप से अनन्य: केवल पहला मिलान करने वाला
<c:when>निष्पादित होता है (switch-case के समान)। - आदेश मायने रखता है: शर्तों को सबसे विशिष्ट से सामान्य क्रम में रखें।
- <c:otherwise> वैकल्पिक है लेकिन सभी मामलों को कवर करने के लिए अनुशंसित है।
- EL एक्सप्रेशन्स:
testएट्रिब्यूट EL एक्सप्रेशन्स का उपयोग करता है (${...})। - नेस्टिंग:
<c:choose>ब्लॉक्स को नेस्ट किया जा सकता है।
switch स्टेटमेंट के साथ तुलना
| विशेषता | Java switch | <c:choose> |
|---|---|---|
| सिंटैक्स | स्टेटमेंट | टैग-आधारित |
| केस | case value: | <c:when test="${cond}"> |
| डिफ़ॉल्ट | default: | <c:otherwise> |
| फॉल-थ्रू | संभावित (break के बिना) | नहीं (केवल पहला मैच) |
| शर्तें | स्थिर मान | डायनामिक EL एक्सप्रेशन्स |