我在JSP中有两个从控制器servlet传递的arraylists:allOptionsList
和alreadySelectedOptionsList
。
我正在尝试使用<select>
下拉列表生成HTML表单,并且我希望在allOptionsList
中将<option>
中的所有项目显示为<select>
但是,我想要的项目是在alreadySelectedOptionsList
中显示为<option selected="selected">
。
这就是我已经拥有的:
<select name="options" size="20">
<c:forEach items="${allOptionsList}" var="optionAll">
<option>${optionAll.optionName}</option>
</c:forEach>
</select>
基本上,如果选项已经在alreadySelectedOptionsList
列表中,我想要选择它。我怎样才能做到这一点?
答案 0 :(得分:0)
使用c:if
<select name="options" size="20">
<c:forEach items="${allOptionsList}" var="optionAll">
<c:if test="${optionAll.selected == 'true'}">
<option>${optionAll.optionName}</option>
</c:if>
</c:forEach>
</select>
答案 1 :(得分:0)
如果您的目标是支持使用参数调用方法的EL 2.2功能的Servlet 3.0容器(例如Tomcat 7,Glassfish 3等),那么您可以使用List#contains()
方法。
<select name="options" size="20">
<c:forEach items="${allOptionsList}" var="optionAll">
<option ${alreadySelectedOptionsList.contains(optionAll.optionName) ? 'selected' : ''}>${optionAll.optionName}</option>
</c:forEach>
</select>
但是如果您的目标是不支持在EL中调用方法的旧容器,那么您需要创建一个自定义EL函数来完成这项工作。您可以在此答案中找到具体示例:How can i do a multiselect in jsp/jstl with selected value?