2012-08-17 55 views
8

因此,我爲每個主題的等級選擇一個選項。它是預定義的,因此我不需要將成績作爲表格存儲在數據庫中。我有一份資格清單,我對每個人都使用jstl:<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」是否持有一個標記,指明應該選擇哪一個? – 2012-08-20 18:26:36

+0

是的,qd有和id,姓名,年級和年份。所有這些信息都可以通過qd獲得。所以任何給定的qd的等級屬性都會有一個等級值,這應該是我選擇的值 – Binaryrespawn 2012-08-21 16:16:14

回答

19

您可以讓JSP有條件地呈現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>在EL的可用。我不確定那會是多麼「笨重」。您可以使用<c:set>來存儲它們的逗號,並使用fn:split()將它們拆分爲<c:forEach>

<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的代碼。