JSTL - 迭代显示两列上的项目的列表

时间:2016-11-28 09:20:42

标签: jsp jstl

我有一个列表,让我们说它包含这些元素:{A,B,C,D,E,F},我想在两列的jsp页面上显示它们(使用,不是表),就这样

<c:forEach var="item" items="${list}" varStatus="loopCounter">          
    <div>
        <div>${item.key}&nbsp;&nbsp;<b>${item.value}</b></div>
    </div>
    <c:if test="${loopCounter.count%2 ==0}">
        <BR>
    </c:if>
</c:forEach>

我认为这样的事情却不起作用:

var connectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString;
var sql = "SELECT ItemOne, ItemTwo, ItemThree FROM tableItem";
using (var table = new DataTable) {
    using (var adapter = new SqlDataAdapter(sql, connectionString)
        adapter.Fill(table);
    foreach (DataRow dr in table.Rows)
        DropDownList1.Items.Add(new ListItem(dr["ItemTwo"], dr["ItemTwo"]) {
            Tag = dr["ItemThree"]
        });
}

1 个答案:

答案 0 :(得分:0)

你说${list}是一个列表,
但是您试图像使用${item.key}${item.value}的地图一样访问它。

我想你们正在混合两者,因此你得不到你期望的结果。

以下是列表和地图的两个示例,如何显示内容,如表:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>table with modulo</title>
    <style type="text/css">
    .psydoTableCell {
        float:left; 
        margin-left:10px;
        display: table-cell;
    }
    </style>
</head>
<body>
<%
    ArrayList<String> list = new ArrayList<String>();
    list.add("A");
    list.add("B");
    list.add("C");
    list.add("D");
    list.add("E");
    list.add("F");
    pageContext.setAttribute("list", list);
%>
    <h3>iterate a list</h3>
    <div>
        <c:forEach var="item" items="${list}" varStatus="loopCounter">          
            <div class="psydoTableCell">${item}</div>
            <c:if test="${loopCounter.count %2 == 0}">
                <br>
            </c:if>
        </c:forEach>
    </div>
<%
    Map<String,String> map =new HashMap<String,String>();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "3");
    map.put("d", "4");
    pageContext.setAttribute("map", map);
%>
    <h3>iterate a map</h3>
    <div>
        <c:forEach var="item" items="${map}" varStatus="loopCounter">          
            <div class="psydoTableCell">${item.key}</div>
            <div class="psydoTableCell">${item.value}</div>
            <br>
        </c:forEach>
    </div>
</body>
</html>

输出:

  

迭代列表

     

A B
    C D
    E F

     

迭代地图

     

a 1
   b 2
   c 3
   d 4