如何在下拉框中显示数组列表的内容

问题描述:

我有一个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我这样做,和我的一切是这样的:

alt text

它摆在那里的第一个,但剩下的就不用填写!

+0

您是否验证过查询返回多行? – Roadie57 2010-10-08 14:49:31

根本没有理由创建数组列表。

while (rsTagCheck.next()) { 
    %> 
    <option><%= rsTagCheck.getString("XKRPRMT_TAG") %></option> 
    <% 
} 

编辑 —当然在实践中,你应该小心什么这些字符串可能包含。如果字符串来自某种用户输入,则不应该只是将它们不经过清理而转储到HTML中。但是,这是一个完整的其他主题。

+0

我试过了,我在问题中发布了图片。它没有填充过去的第一个tagNum!其余的diplayed在下拉框外。 – 2010-10-08 14:47:03

+1

@gary:你应该只在* while循环后面打印'',而不是在里面。此外,您的JSP/JDBC代码在问题中是未来麻烦的秘诀。我强烈建议把所有的东西放在一边,让自己通过一个*像样的* JSP/Servlet/JDBC书籍/教程。 – BalusC 2010-10-08 16:25:57

+0

@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循环数据。

+1

为了扩大这个答案,这里是[链接](http://*.com/questions/3177733/howto-avoid-java-code-in-jsp-files)。 – BalusC 2010-10-08 16:26:46