9

そのため、各科目の成績を選択しています。事前定義されているため、成績をデータベースにテーブルとして保存する必要はありません。資格のリストがあり、次のようにそれぞれに jstl を使用しています<c:forEach items="${qualificationdetails}" var="qd">

アイテムごとに、このようなセレクトを制作しています。

<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>

これにより、選択に重複したオプションが追加されます。グレードを含む配列を作成し、オプションを生成するためにそれを送信するのは少し「不格好」だと思います。何か案は ?

4

1 に答える 1

23

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>

または、成績のコレクション/配列を作成してアプリケーションスコープに保存し、ELで使用できるようにして、を使用してループできるようにすることもできます<c:forEach>。それがどのように「不格好」になるかはわかりません。<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コードが作成されます。

于 2012-08-21T11:25:18.053 に答える