JSTL arraylist。价值是空的

时间:2012-01-14 15:07:22

标签: java jsp jstl

我正在寻找和我一样的问题,但我没有找到任何东西。这是我的问题:

我有包含bean的ArrayList。我的豆子是'Row'。有吸引人和吸气剂。

这是来自Database class的方法:

public ArrayList<Row> getDatalist() {
    datalist = new ArrayList<Row>();
    try {
        String query = "SELECT * FROM ...";
        ResultSet r = s.executeQuery(query);
        while(r.next()) {
            Row row = new Row();
            row.setLocation(r.getString(4));
            row.setVolume(r.getInt(3));
            row.setTime(r.getTime(5));
            row.setDate(r.getDate(5));
            datalist.add(row);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return datalist;
}

我的servlet:

    ArrayList<Row> rows = db.getDatalist();
    request.setAttribute("rows", rows);
    request.getRequestDispatcher("/main.jsp").forward(request,response);

至少'main.jsp':

<c:forEach var="row" items="${rows}">
      <c:out value="${row.location}"></c:out>
</c:forEach>

问题是$ {row.location}为空。我的页面来源:

<c:forEach var="row" items="[webservice.model.Row@1e41769, webservice.model.Row@1bd0815, webservice.model.Row@15dd716, webservice.model.Row@1d40d08]">

      <c:out value=""></c:out>

</c:forEach>

有什么想法吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

嗯,您的页面来源清楚地表明了问题:容器不会解释c标记。这意味着您忘记在JSP顶部声明c taglib:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

答案 1 :(得分:0)

请确保您已将此设置为:

<%@ page isELEnabled ="true"%>

使el表达式启用。