如何在下拉框中显示数组列表的内容
我有一个sql语句,它为每个pidm的tagnum提供信息。每个pidm可以有多个tagnum,所以我将这些信息放入一个数组列表中。我想在html页面的下拉框中显示这个数组列表的内容。如何在下拉框中显示数组列表的内容
下面是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例外。我想知道如何显示列表中的所有信息。
@Pointy我这样做,和我的一切是这样的:
它摆在那里的第一个,但剩下的就不用填写!
根本没有理由创建数组列表。
while (rsTagCheck.next()) {
%>
<option><%= rsTagCheck.getString("XKRPRMT_TAG") %></option>
<%
}
编辑 —当然在实践中,你应该小心什么这些字符串可能包含。如果字符串来自某种用户输入,则不应该只是将它们不经过清理而转储到HTML中。但是,这是一个完整的其他主题。
我试过了,我在问题中发布了图片。它没有填充过去的第一个tagNum!其余的diplayed在下拉框外。 – 2010-10-08 14:47:03
@gary:你应该只在* while循环后面打印'',而不是在里面。此外,您的JSP/JDBC代码在问题中是未来麻烦的秘诀。我强烈建议把所有的东西放在一边,让自己通过一个*像样的* JSP/Servlet/JDBC书籍/教程。 – BalusC 2010-10-08 16:25:57
@BalusC是正确的 - 像这样的scriptlet代码是编写JSP页面的极其过时的方式。 – Pointy 2010-10-08 20:54:35
不要使用小脚本,使用jstl tags在这种情况下
<c:forEach var="myTag" items="${rsTagCheck}">
和
<c:out value="${myTag.getString('XKRPRMT_TAG')}" />
其实你的代码再来看,我不会把数据库查询放在一个小脚本!数据库访问不应该在这里完成,将结果集从servlet传递给jsp,并使用jstl循环数据。
为了扩大这个答案,这里是[链接](http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files)。 – BalusC 2010-10-08 16:26:46
您是否验证过查询返回多行? – Roadie57 2010-10-08 14:49:31