2013-10-25 43 views
0

在Java Bean的頁面我寫這篇文章的代碼: -如何使用HashTable填充下拉列表?或HashMap?

package sandip; 

import java.sql; 
import java.util.*; 
import java.text.*; 
import sandip.DataBaseConnection; 

public class UserBean { 

    private ArrayList<Assay> assays = new ArrayList<Assay>(); 
    private ArrayList<String> StringValue = new ArrayList<String>(); 

    private Map<String, String> details = new HashMap<String, String>(); 

public void setDetails() {  

    Statement stmt = null; 
    ResultSet rs = null; 
    String sql = null; 
    DataBaseConnection obj = new DataBaseConnection(); 
    Connection conn = null; 
    conn = obj.connectToDb(); 


    try{ 

     stmt = conn.createStatement(); 
     sql = "SELECT `email`, `password` FROM `accounts` LIMIT 0, 12"; 
     rs = stmt.executeQuery(sql); 

     while(rs.next()) { 
     details.put(rs.getString("password"), rs.getString("email")); 
     } 
    }catch(SQLException e) { 
     e.printStackTrace(); 
    }catch(Exception ex) { 
     ex.printStackTrace(); 
    } 

    } 

    public Map<String, String> getDetails() { 

    return this.details; 
    } 
} 

,在我的jsp頁面我已經使用通過循環迭代: -

但它不打印anything.What我現在應該改變?如果我必須做其他事情?

<h3>Hashtable iteration</h3> 
<table border="1"> 
    <c:forEach items="${userDetails.details}" var="item"> 
    <tr> 
     <td align="center"><c:out value="${item.name}"/></td> 
     <td align="center">${item.value}</td> 
    </tr> 
    </c:forEach> 
    <br> 
    <ol> 
    <c:forEach items="${userDetails.details}" var="item"> 
     <li><c:out value="${item.key}"/>=<c:out value="${item.value}"/></li> 
     </c:forEach> 
    </ol> 

的$ {} item.key沒有打印任何值

回答

0

如何在爲userDetails設置成JSP?誰在調用setDetails方法?

無論如何,讓setter方法沒有任何參數是不好的主意,因爲它違反了java bean的約定。根據您的getDetails()獲得者,您的setDetails()應接受Map<String, String>作爲參數。我將僅使用UserBean作爲數據持有者,並將數據庫獲取代碼移入servlet(或其他控制器,服務或DAO對象)中。