小编典典

使用jstl在现有的选择标签上设置选择的选项

jsp

因此,我可以选择每个学科的成绩。它是预定义的,因此我不必将成绩作为表格存储在数据库中。我有一个资格列表,并且每个人都使用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>

这会将重复选项添加到选择中。我认为用成绩创建一个数组并将其发送给生成选项会有点“笨拙”。有任何想法吗 ?


阅读 337

收藏
2020-06-08

共1个答案

小编典典

您可以让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代码。

2020-06-08