[英]How can I produce a select tag using JSTL or Standard Actions in a JSP
我想在 JSP 中创建一个选择标记,其中选项是一个枚举(例如,所有美国州)。 它们是 JSTL 中的标记还是可以执行此操作的标准标记,而无需手动遍历列表?
当然,在JSTL (只需将jstl-1.2.jar放到/WEB-INF/lib
)有c:forEach
标签。 您只需将(老式) Enumeration
转换为现代List
或者如果它是用 Java 硬编码的,则可能是Enum
。 如果要从不可更改的第 3 方 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
或application
范围——其中application
范围是最直接的选择,因为国家列表是应该是一个应用范围的常数。 您可以使用ServletContextListener
将其加载一次并在应用程序启动时放入应用程序范围。 在这个例子中, Country
只是一个至少有两个属性的 Javabean(模型)类。
JSTL 中没有。 然而,许多框架提供了这样的附加标签:
Struts2 - <s:select>
Spring MVC - <form:select>
<h:selectOneMenu>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.