2013-10-25 32 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对象)中。