将arraylist值绑定到JSP下拉列表

Lak*_*thR 3 java jsp

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

Bal*_*usC 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>
Run Code Online (Sandbox Code Playgroud)

这假设您的List<Item>位置Item如下所示:

public class Item {
    private String value;
    private String label;
    // Add/generate c'tors, getters and setters.
}
Run Code Online (Sandbox Code Playgroud)

在服务器端,您可以获取所选项目,如下所示:

String selectedItem = request.getParameter("item");
Run Code Online (Sandbox Code Playgroud)

您也可以使用a Map<String, String>而不是List<Item>where Item实际上是键值对.然后,您可以通过以下方式迭代它:

<select name="item">
    <c:forEach items="${map}" var="entry">
        <option value="${entry.key}">${entry.value}</option>
    </c:forEach>
</select>
Run Code Online (Sandbox Code Playgroud)

相关答案:


更新:按照意见,你应该永远不会复制服务器特定的库,例如Tomcat/lib/*.*到web应用程序的/WEB-INF/lib中(默认)运行时类路径(例如,或其他地方JRE/lib/ext).这只会导致类路径中的冲突,从而导致此类错误,并且会使您的webapp无法运行且不可移植.您应该将特定于服务器的库保留在其默认位置./WEB-INF/lib从任何特定于服务器的库中清除.

您可能在那里复制了特定于服务器的库,因为您无法编译servlet.复制库/WEB-INF/lib是错误的解决方案.您基本上应该只在compiletime类路径中指定这些库.目前还不清楚你正在使用哪个IDE,但如果它是Eclipse,这可以很容易地完成:首先在Servers视图中添加服务器,然后将动态webapp项目与添加的服务器相关联.在全新的Web项目中,您可以在项目创建向导期间选择服务器.在现有Web项目中,您可以在项目属性的" 目标运行时"部分中对其进行修改.这样Eclipse将自动将特定于服务器的库添加到项目的构建路径中.


归档时间:

查看次数:

12575 次

最近记录:

12 年,8 月 前