首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java中的LinkedHashMap从sql server数据库填充下拉列表

如何使用java中的LinkedHashMap从sql server数据库填充下拉列表
EN

Stack Overflow用户
提问于 2015-02-09 10:12:43
回答 1查看 1.4K关注 0票数 1

在Server数据库中,我有一个表,该表有三个列,即Ref_Name、Ref_from和Ref_to.Now,我希望下拉列表按行顺序保存值,即该行的所有列值都应以下列方式出现在下拉列表中:

参考-1(2014-10-1007:17:00.000至2014-10-1008:46:00.000) 参考-2( 2014-09-01 10:00:00.000至2014-09-01 11:00:00.000)

为此,我使用LinkedHashMap作为:-

代码语言:javascript
复制
    public LinkedHashMap<String, List<String>> connect()
    {
        ArrayList<String> list = new ArrayList<String>();
        try
        { 
            con = getConnection();
            stmt = con.createStatement();
            String sql="select Ref_No,From_Date,To_Date from Ref_time";
            stmt.executeQuery(sql);
            rs = stmt.getResultSet();
            while (rs.next()) 
            {
                list.add(rs.getString(2));
                list.add(rs.getString(3));
                ref.put(rs.getString(1), list);
            }

        }
        catch( Exception e )
        {
            System.out.println("\nException "+e);
        }
        finally
        {
            //closeConnection(stmt, rs, con);
        }
         return ref;
    }

当我在jsp中使用它时

代码语言:javascript
复制
<select name="ref_logtime">
<c:forEach var="aff" items="${obj.connect()}">
<option value="${aff.key}">${aff.key}</option>
<option value="${aff.value}">${aff.value}</option>
</c:forEach>
</select>

在下拉列表中,我得到的值是:-

代码语言:javascript
复制
 Reference-1
 All datetime entries are shown here
 Reference-2
 All datetime entries are shown here

但是我希望我的下拉列表有值行wise.How来完成这个任务吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-09 13:59:26

您的代码有两个问题。首先,每个参考映射都需要有自己的List。目前,该列表正在共享,因此两个参考条目都将显示所有日期。将代码更改为

代码语言:javascript
复制
rs = stmt.executeQuery(sql);
while (rs.next()) 
{
    List<String> list = new ArrayList<String>();
    list.add(rs.getString(2));
    list.add(rs.getString(3));
    ref.put(rs.getString(1), list);
}

第二个问题是JSTL标记。在循环中只需要一个<option>标记,它将为您运行两次(因为您有两个来自数据库的引用条目)来生成两个<option>标记条目。

代码语言:javascript
复制
<select name="ref_logtime">
  <c:forEach var="aff" items="${obj.connect()}">
    <option value="${aff.key}">${aff.key} ${aff.value}</option>
  </c:forEach>
</select>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28407312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档