Jsp 如何设置<;选择的选项>;基于ArrayList?
我在JSP中有两个数组列表,它们是从控制器servlet传递的:Jsp 如何设置<;选择的选项>;基于ArrayList?,jsp,jstl,html-lists,html-select,Jsp,Jstl,Html Lists,Html Select,我在JSP中有两个数组列表,它们是从控制器servlet传递的:allOptionsList和alreadySelectedOptionsList 我正在尝试使用下拉列表生成HTML表单,我想将AlloptionList中的所有项目显示为中的,但是,我想将中的项目显示为 这是我已经拥有的: <select name="options" size="20"> <c:forEach items="${allOptionsList}" var="optionAll">
allOptionsList
和alreadySelectedOptionsList
我正在尝试使用
下拉列表生成HTML表单,我想将AlloptionList
中的所有项目显示为
中的
,但是,我想将中的项目显示为
这是我已经拥有的:
<select name="options" size="20">
<c:forEach items="${allOptionsList}" var="optionAll">
<option>${optionAll.optionName}</option>
</c:forEach>
</select>
${optionAll.optionName}
基本上,如果选项已在alreadySelectedOptionsList
列表中,则我希望选择该选项。如何实现这一点?使用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>
${optionAll.optionName}
如果您的目标是一个Servlet 3.0容器,它支持使用参数调用方法的EL 2.2特性(例如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>
${optionAll.optionName}
但是,如果您的目标是一个不支持在EL中调用方法的旧容器,那么您需要创建一个自定义EL函数来完成此任务。你可以在这个答案中找到一个具体的例子:但我必须将它与AlreadySelectedOptions列表进行比较,看看它是否已经被选中。如果它在AlreadySelectedOptions列表中,那么它应该打印为“${optionAll.optionName}”,我确实做了一些与您建议的类似的事情,只是用java,因为我使用的是2.5容器。我创建了第三个对象,其中包含boolen isSelected字段。我比较了两个列表中的对象,对于两个列表中的对象,我将isSelected设置为true。所有这些新对象都放置在一个列表中,然后返回到视图。事实上,这和你提出的解决方案是一样的。