相同的选项在下拉列表中被选中两次,如何停止?

时间:2015-04-06 08:57:34

标签: java html jsp servlets jstl

我正在尝试构建一个项目,用户在该项目中提交故障单,并可在提交后稍后对其进行编辑。在创建故障单页面上有一个下拉菜单,用于选择具有选项的票证优先级 - 最高,高,中,低。数据库中有一个表用于优先级选项。当用户点击与票证对应的编辑链接时,用户被转发到编辑页面,其中显示票证的不同字段。为了显示优先级菜单的选定选项我正在执行此操作,如下所示

<select name="priority">
 <c:forEach var="priority"items="${priorityList }">
    <c:if test="${tempTicket.priorityId == priority.priorityId}">
        <option value="${priority.priorityId }" selected="selected">${priority.priorityName}</option>
    </c:if>
   <option value="${priority.priorityId }">${priority.priorityName </option>
 </c:forEach>
</select>

在此处,所选选项在编辑页面的下拉列表中显示两次,如何停止?有没有其他方法可以满足相同的目的?我尝试过使用两个<c:if>

3 个答案:

答案 0 :(得分:4)

第一个解决方案:

<c:if test="${tempTicket.priorityId != priority.priorityId}">
    <option value="${priority.priorityId }">${priority.priorityName }</option>
</c:if>

第二个解决方案:

<c:choose>
    <c:when test="${tempTicket.priorityId != priority.priorityId}>
        ...
    </c:when>
    <c:otherwise>
        ...
    </c:otherwise>
</c:choose>

第三(也是最佳)解决方案:

<option value="${priority.priorityId }" 
        <c:if test="${tempTicket.priorityId == priority.priorityId}">selected="selected"</c:if>>
    ${priority.priorityName}
</option>

答案 1 :(得分:1)

jstl中的其他实现是

  

选择标签

<c:choose>
  <c:when test="cond1">
    Condition 1
  </c:when>
  <c:otherwise>
    Condition 2 (if condition 1 is false)
  </c:otherwise>
</c:choose>

答案 2 :(得分:1)

试试这个

<option value="${priority.priorityId }" 
${tempTicket.priorityId == priority.priorityId? "selected" : ""} 
>${priority.priorityName}</option>