【问题标题】:How to display the contents of an arraylist in a drop down box如何在下拉框中显示数组列表的内容
【发布时间】:2011-04-22 22:29:19
【问题描述】:

我有一个 sql 语句,它为单个 pidm 提取关于 tagnum 的信息。每个 pidm 可以有多个 tagnum,所以我将信息放入 arraylist。我想在 html 页面的下拉框中显示这个数组列表的内容。

数组列表的代码如下:

       <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>

我可以让第一个元素显示在下拉框中,但之后的任何内容都会显示出界异常。我想知道如何在arraylist 中显示所有信息。

@Pointy 我做到了,我得到的只是这个:

它把第一个放在那里,但其余的不会填充!!

【问题讨论】:

  • 您是否验证查询返回的不止一行?

标签: html jsp arraylist


【解决方案1】:

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

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

edit——当然在实践中你应该小心那些字符串可能包含的内容。如果字符串来自某种类型的用户输入,那么您不应该只是将它们原封不动地转储到 HTML 中。然而,那完全是另一回事了。

【讨论】:

  • 我试过了,我在问题中发布了图片。它没有超过第一个 tagNum !!!其余部分显示在下拉框之外。
  • @gary:你应该只在while循环之后打印&lt;/select&gt;,而不是在里面。此外,问题中的 JSP/JDBC 代码是未来麻烦的秘诀。我强烈建议把所有东西都放在一边,让自己通过一本体面的 JSP/Servlet/JDBC 书籍/教程。
  • @BalusC 是正确的 - 这样的 scriptlet 代码是一种非常过时的 JSP 页面编写方式。
【解决方案2】:

不要使用脚本,使用jstl tags,在这种情况下

<c:forEach var="myTag" items="${rsTagCheck}">

<c:out value="${myTag.getString('XKRPRMT_TAG')}" />

实际上再次查看您的代码,我不会将 db 查询放在 scriptlet 中!此处不应进行 DB 访问,将结果集从 servlet 传递给 jsp,并使用 jstl 循环访问数据。

【讨论】:

  • 要扩展这个答案,这里是link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
相关资源
最近更新 更多