我基本上是在JSP页面中循环遍历Arraylist,我可以使用选项成功填充Dropdown。
<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循环生成后,Dropdown包含以下值:
如果version.versionName中的值是例如2.0,我需要循环将 2.0 设置为下拉列表的选项。
如何将此if条件添加到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 :(得分:1)
它没有用,因为你没有正确使用表达式语言
$ {....}包含EL表达式而不是EL变量 与String文字不同的变量不需要EL表达式中的引号
因此这不起作用
<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:out标签并使用三元运算符
注意:在这种情况下,如果您想在所选属性周围使用双引号,则可以创建一个在EL表达式内使用的var,而不是在引号之间创建冲突
<c:set var="sel" value='selected = "selected"'>
<option value="${version.versionName}" "${versions[0].versionName == version.versionName ? sel : ''}"> ${version.versionName}</option>
答案 1 :(得分:0)
在Ternary运算符
的帮助下试一试 <option value="${version.versionName}" ${versions[0].versionName == version.versionName?'selected=selected':''} >${version.versionName}</option>