<c:set> टैग setProperty एक्शन का JSTL-अनुकूल संस्करण है। यह टैग उपयोगी है क्योंकि यह एक एक्सप्रेशन का मूल्यांकन करता है और परिणामों का उपयोग JavaBean या java.util.Map ऑब्जेक्ट के मान को सेट करने के लिए करता है।
एट्रिब्यूट्स
<c:set> टैग में निम्नलिखित एट्रिब्यूट्स होते हैं:
| एट्रिब्यूट | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
| value | सहेजने के लिए जानकारी | नहीं | बॉडी |
| target | उस वेरिएबल का नाम जिसकी प्रॉपर्टी संशोधित की जानी चाहिए | नहीं | कोई नहीं |
| property | संशोधित की जाने वाली प्रॉपर्टी | नहीं | कोई नहीं |
| var | जानकारी संग्रहीत करने के लिए वेरिएबल का नाम | नहीं | कोई नहीं |
| scope | जानकारी संग्रहीत करने के लिए वेरिएबल का स्कोप | नहीं | page |
यदि target निर्दिष्ट है, तो property भी निर्दिष्ट किया जाना चाहिए।
उदाहरण
<%@ taglib uri="https://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title><c:set> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>
</body>
</html>
आउटपुट
4000
उपयोग पैटर्न
1. सरल वेरिएबल असाइनमेंट
<c:set var="username" value="john"/>
<c:set var="count" value="${param.count + 1}"/>
2. JavaBean प्रॉपर्टी सेट करना
<c:set target="${user}" property="name" value="John"/>
3. Map एंट्री सेट करना
<c:set target="${myMap}" property="key" value="value"/>
4. बॉडी कंटेंट का उपयोग करना
<c:set var="message">
Hello, ${user.name}!
</c:set>
5. स्कोप नियंत्रण
<c:set var="config" value="${initParam}" scope="application"/>
लाभ
- EL एकीकरण: डायनामिक मानों के लिए
${...}का समर्थन करता है। - स्कोप नियंत्रण: page, request, session, application।
- बीन/मैप समर्थन: प्रॉपर्टी सेटर्स और Map.put() के साथ काम करता है।
- क्लीनर सिंटैक्स: स्क्रिप्टलेट्स (
<% ... %>) से बचाता है।
नोट
target एक EL एक्सप्रेशन होना चाहिए जो बीन/मैप पर हल होता है, स्ट्रिंग लिटरल नहीं। property बीन के लिए सेटर नाम (setXxx के बिना "set") या मैप के लिए कुंजी है।