【发布时间】:2011-03-15 03:39:59
【问题描述】:
我有一个包含一些数据的数组列表。我需要将该数据绑定到 JSP 中的下拉列表并获取所选索引。任何人都可以帮助我吗?
【问题讨论】:
我有一个包含一些数据的数组列表。我需要将该数据绑定到 JSP 中的下拉列表并获取所选索引。任何人都可以帮助我吗?
【问题讨论】:
您可以使用 JSTL c:forEach 遍历列表(如果尚未完成,只需将 jstl-1.2.jar 放入 /WEB-INF/lib 即可安装它)。
<select name="item">
<c:forEach items="${list}" var="item">
<option value="${item.value}">${item.label}</option>
</c:forEach>
</select>
这假设您有一个List<Item>,其中Item 看起来像这样:
public class Item {
private String value;
private String label;
// Add/generate c'tors, getters and setters.
}
在服务器端获取选中项如下:
String selectedItem = request.getParameter("item");
您也可以使用Map<String, String> 代替List<Item>,其中Item 实际上是一个键值对。然后,您可以通过以下方式对其进行迭代:
<select name="item">
<c:forEach items="${map}" var="entry">
<option value="${entry.key}">${entry.value}</option>
</c:forEach>
</select>
更新:根据 cmets,您应该永远不要将特定于服务器的库(例如 Tomcat/lib/*.*)复制到 webapp 的 /WEB-INF/lib 或(默认)运行时中的任何其他位置类路径(例如JRE/lib/ext)。这只会导致类路径中的冲突,从而导致此类错误,并且会使您的 webapp 无法运行和不可移植。您应该将特定于服务器的库保留在其默认位置。从任何特定于服务器的库中清除 /WEB-INF/lib。
您可能在那里复制了特定于服务器的库,因为您无法编译您的 servlet。复制/WEB-INF/lib 中的库是错误的解决方案。您基本上应该只在编译时类路径中指定这些库。目前尚不清楚您使用的是哪个 IDE,但如果是 Eclipse,这可以轻松完成:首先在 Servers 视图中添加服务器,然后将您的动态 webapp 项目与添加的服务器相关联。在全新的 Web 项目上,您可以在项目创建向导期间选择服务器。在现有的 Web 项目中,您可以在项目属性的 Targeted Runtimes 部分中对其进行修改。这样 Eclipse 会自动将特定于服务器的库添加到项目的构建路径中。
【讨论】: