2016-04-13 61 views
0

我基本上是循環瀏覽JSP頁面中的Arraylist,並且可以使用選項成功填充下拉菜單。在JSTL For循環中將下拉菜單設置爲'selected'

<select id="perm_bmi_stable" name="perm_bmi_stable" class="col-md-12 form-control"> 
    <optgroup label="Stability"> 
     <c:forEach items="${versions}" var="version"> 
      <option value="${version.versionName}"> ${version.versionName </option> 
     </c:forEach> 
    </optgroup> 
</select> 

現在我需要在下拉取決於version.versionName值的值設置適當的值作爲選擇

下拉包含下列值for循環生成它們之後:

  • 1.0
  • 2.0
  • 3.0
  • 4.0

如果version.versionName值是例如2.0,我需要循環設置2.0作爲下拉的選擇ed選項。

如何將條件添加到我的for循環?

我想這一點,但它不工作:

<option value="${version.versionName}" <c:if test="${versions[0].versionName == '${version.versionName}'}"> <c:out value="selected=selected"></c:out></c:if>>${version.versionName}</option> 

回答

0

<option value="${version.versionName}" ${versions[0].versionName == version.versionName?'selected=selected':''} >${version.versionName}</option> 
1

它不工作,因爲你沒有使用與三元操作符的幫助下嘗試表達式語言正確

$ {....}包含EL表達式不EL變量 和變量不像字符串文字不n裏面EL EED報價表達式

因此這將無法工作

<option value="${version.versionName}" <c:if test="${versions[0].versionName == '${version.versionName}'}"> <c:out value="selected=selected"></c:out></c:if>>${version.versionName}</option> 

這應該工作。 注意:您可能要添加所選屬性各地報價有一個一致的符號

<option value="${version.versionName}" <c:if test="${versions[0].versionName == version.versionName}"> <c:out value='selected="selected"'></c:out></c:if>>${version.versionName}</option> 

爲了提高你可能想擺脫的C可讀性:出標籤,如果他們不是絕對必要的,並使用三元運營商

注:在這種情況下,如果你想雙引號來選擇屬性,你可以創建一個變種使用EL表達式中不要創建報價之間的衝突

<c:set var="sel" value='selected = "selected"'> 

<option value="${version.versionName}" "${versions[0].versionName == version.versionName ? sel : ''}"> ${version.versionName}</option>