我有一些带有一些数据的arraylist。我需要将该数据绑定到JSP中的下拉列表并获取所选索引。任何人都能帮助我吗?
答案 0 :(得分:5)
您可以使用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>
更新:根据评论,您应永远将服务器特定的库(如Tomcat/lib/*.*
)复制到webapp的/WEB-INF/lib
或其他任何地方(默认)运行时类路径(例如JRE/lib/ext
)。这只会导致类路径中的冲突,从而导致这种错误,并且会使您的webapp无法运行且不可移植。您应该将特定于服务器的库保留在其默认位置。从任何特定于服务器的库中清除/WEB-INF/lib
。
您可能在那里复制了特定于服务器的库,因为您无法编译servlet。在/WEB-INF/lib
中复制库是错误的解决方案。您基本上应该只在compiletime类路径中指定这些库。目前还不清楚您正在使用哪个IDE,但如果是Eclipse,则可以轻松完成:首先在 Servers 视图中添加服务器,然后将动态webapp项目与添加的服务器关联。在全新的Web项目中,您可以在项目创建向导期间选择服务器。在现有Web项目中,您可以在项目属性的 Targeted Runtimes 部分中对其进行修改。这样Eclipse就会自动将特定于服务器的库添加到项目的构建路径中。