将arraylist值绑定到JSP下拉列表

时间:2010-07-13 05:50:39

标签: java jsp

我有一些带有一些数据的arraylist。我需要将该数据绑定到JSP中的下拉列表并获取所选索引。任何人都能帮助我吗?

1 个答案:

答案 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就会自动将特定于服务器的库添加到项目的构建路径中。