如何根据ArrayList?</option>设置<option selected =“”>

时间:2012-01-13 07:23:30

标签: jsp jstl html-lists html-select

我在JSP中有两个从控制器servlet传递的arraylists:allOptionsListalreadySelectedOptionsList

我正在尝试使用<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列表中,我想要选择它。我怎样才能做到这一点?

2 个答案:

答案 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?