我有一个sql语句,可以为各个pidm提供关于tagnum的信息。每个pidm都可以有多个tagnum,所以我将信息丢弃到arraylist中。我想在html页面的下拉框中显示这个arraylist的内容。
以下是arraylist的代码:
<table style="border:transparent" style="width:100%">
<tr>
<td style ="width: 300px;">
<select style="width:150px;"tabindex="5" name="Tag">
<option></option>
<%} rscheck.close();
ResultSet rsTagCheck = stmt.executeQuery("SELECT PARKING.XKRPRMT.XKRPRMT_PIDM, PARKING.XKRPRMT.XKRPRMT_STATUS, PARKING.XKRPRMT.XKRPRMT_EXPIRE_YR, PARKING.XKRPRMT.XKRPRMT_TAG FROM PARKING.XKRPRMT WHERE XKRPRMT_PIDM ='" + BannerID + "'");
while (rsTagCheck.next()){
ArrayList<String> myTag = new ArrayList<String>();
myTag.add(rsTagCheck.getString("XKRPRMT_TAG"));
%>
<option><%= myTag.get(0) %></option>
</select>
</td>
我可以在下拉框中显示第一个要显示的元素,但之后的任何内容都会显示一个outofbounds异常。我想知道如何显示arraylist中的所有信息。
@Pointy我做到了,我得到的就是这个:
它把第一个放在那里,但其余的不会填充!!
答案 0 :(得分:2)
根本没有理由创建数组列表。
while (rsTagCheck.next()) {
%>
<option><%= rsTagCheck.getString("XKRPRMT_TAG") %></option>
<%
}
编辑 - 当然,在实践中,您应该注意这些字符串可能包含的内容。如果字符串来自某种用户输入,那么您不应该只是将它们未经洗涤转储到HTML中。然而,这是另一个主题。
答案 1 :(得分:1)
不要使用scriptlet,请使用jstl tags,在这种情况下使用
<c:forEach var="myTag" items="${rsTagCheck}">
和
<c:out value="${myTag.getString('XKRPRMT_TAG')}" />
实际上再看一下你的代码,我不会把db查询放在scriptlet中!不应在此处进行DB访问,将结果集从servlet传递给jsp,并使用jstl循环访问数据。