jstl

2012-08-17 12 views
8

के साथ मौजूदा चयन टैग पर चयनित विकल्प सेट करें, इसलिए मेरे पास प्रत्येक विषय पर ग्रेड का चयन है। यह पूर्वनिर्धारित है और इसलिए मुझे डेटाबेस में तालिका के रूप में ग्रेड स्टोर करने की आवश्यकता नहीं है। मेरे पास योग्यता की एक सूची है और मैं प्रत्येक के लिए जेएसटीएल का उपयोग कर रहा हूं: <c:forEach items="${qualificationdetails}" var="qd">jstl

प्रत्येक आइटम के लिए मैं इस तरह का चयन कर रहा हूं।

<select class="grade" title="Grade Obtained"> 
            <option value="1">1</option> 
            <option value="2">2</option> 
            <option value="3">3</option> 
            <option value="A">A</option> 
            <option value="B">B</option> 
            <option value="C">C</option> 
            <option value="D">D</option> 
            <option value="E">E</option> 
</select> 

यह मेरे चर QD का उपयोग कर चयनित विकल्प सेट करने के लिए संभव है?

<option value="${qd.grade}" selected="selecetd">${qd.grade}</option> 

यह कुछ चुनने के लिए एक डुप्लिकेट विकल्प जोड़ देगा। मुझे लगता है कि यह ग्रेड के साथ सरणी बनाने के लिए थोड़ा "गुंजाइश" होगा और विकल्पों को उत्पन्न करने के लिए इसे पार करेगा। कोई विचार ?

+0

आपको कब पता चलेगा कि कौन सा मान डिफ़ॉल्ट रूप से चुना जाना चाहिए, और आप इसे पृष्ठ पर पार्स करने का इरादा कैसे रखते हैं? क्योंकि मैं सोच रहा हूं कि आप पुन: प्रयास करते समय पोस्ट के अंत में प्रस्तावित कर सकते थे, और पुनरावृत्ति के बाद नहीं, जैसे कि आपके पास डुप्लिकेट नहीं है। क्या "qd" एक ध्वज धारण करता है जो बताता है कि किस का चयन किया जाना चाहिए? –

+0

हां, qd है और आईडी, नाम, ग्रेड और वर्ष। यह सारी जानकारी qd के माध्यम से उपलब्ध है। इसलिए किसी भी दिए गए क्यूडी की ग्रेड प्रॉपर्टी में ग्रेड वैल्यू होगा और यह मेरा चयनित मूल्य होना चाहिए – Binaryrespawn

उत्तर

19

आप बस जेएसपी को सशर्त रूप से selected विशेषता प्रस्तुत कर सकते हैं।

<select class="grade" title="Grade Obtained"> 
    <option value="1" ${qd.grade == '1' ? 'selected' : ''}>1</option> 
    <option value="2" ${qd.grade == '2' ? 'selected' : ''}>2</option> 
    <option value="3" ${qd.grade == '3' ? 'selected' : ''}>3</option> 
    <option value="A" ${qd.grade == 'A' ? 'selected' : ''}>A</option> 
    <option value="B" ${qd.grade == 'B' ? 'selected' : ''}>B</option> 
    <option value="C" ${qd.grade == 'C' ? 'selected' : ''}>C</option> 
    <option value="D" ${qd.grade == 'D' ? 'selected' : ''}>D</option> 
    <option value="E" ${qd.grade == 'E' ? 'selected' : ''}>E</option> 
</select> 

वैकल्पिक रूप से, तुम सिर्फ ग्रेड का एक संग्रह/सरणी बना सकते हैं और इतना है कि यह ईएल में उपलब्ध है ताकि आप इसे ऊपर पाश <c:forEach> का उपयोग कर सकते हैं आवेदन गुंजाइश में संग्रहीत कर सकते हैं। मुझे यकीन नहीं है कि यह कैसे "गुंजाइश" होगा। <c:forEach> के लिए उन्हें विभाजित करने के लिए fn:split() को कम से कम स्टोर करने के लिए आप <c:set> का उपयोग कर सकते हैं।

<c:set var="grades" value="1,2,3,A,B,C,D,E" scope="application" /> 
<select class="grade" title="Grade Obtained"> 
    <c:forEach items="${fn:split(grades, ',')}" var="grade"> 
     <option value="${grade}" ${qd.grade == grade ? 'selected' : ''}>${grade}</option> 
    </c:forEach> 
</select> 

इस तरह आप DRY कोड के साथ समाप्त होते हैं।

संबंधित मुद्दे