2010-10-08 128 views
0

我有一個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

回答

2

根本沒有理由創建數組列表。

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

1

不要使用小腳本,使用jstl tags在這種情況下

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

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

其實你的代碼再來看,我不會把數據庫查詢放在一個小腳本!數據庫訪問不應該在這裏完成,將結果集從servlet傳遞給jsp,並使用jstl循環數據。

+1

爲了擴大這個答案,這裏是[鏈接](http://stackoverflow.com/questions/3177733/howto-avoid-java-code-in-jsp-files)。 – BalusC 2010-10-08 16:26:46

相關問題