我想在JSP中创建一个select标签,其中的选项是Enumeration(例如,所有美国州)。它们是JSTL中的标签还是可以执行此操作的标准标签,而无需手动迭代列表?
答案 0 :(得分:16)
当然,在JSTL中(只需在/WEB-INF/lib
中删除jstl-1.2.jar),就会出现c:forEach
标记。如果它在Java中硬编码,您只需将(旧式)Enumeration
转换为现代List
或Enum
。如果要从不可更改的第三方API获取Enumeration
,您可以根据需要抓取Collections#list()
。
以下是演示如何使用<c:forEach>
的演示:
<select name="country">
<c:forEach items="${countries}" var="country">
<option value="${country.code}" ${param.country eq country.code ? 'selected' : ''}>${country.name}</option>
</c:forEach>
</select>
${countries}
应引用List<Country>
或Country[]
,其中包含page
,request
,session
或{ {1}}范围 - application
范围是最直接的选择,因为国家列表应该是应用程序范围的常量。您可以使用application
加载一次,并将应用程序范围放在应用程序的启动上。在这个例子中,ServletContextListener
只是一个至少有两个属性的Javabean(模型)类。
答案 1 :(得分:6)
JSTL中没有。然而,许多框架提供了这样的附加标签:
Struts2 - <s:select>
Spring MVC - <form:select>
<h:selectOneMenu>