首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsp中的jstl -显示结果集

问jsp中的jstl -显示结果集
EN

Stack Overflow用户
提问于 2012-02-28 22:26:55
回答 1查看 4.6K关注 0票数 1

我听从BalusC的回复来解决我的问题

How do I make a Java ResultSet available in my jsp?

现在,当我运行page.jsp时,我会得到这个错误

代码语言:javascript
复制
org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property 'name' not readable on type java.lang.String

请你给出一个解决办法。

我也跟随在下面,没有运气。

javax.el.PropertyNotFoundException: using JSTL in JSP

page.jsp

代码语言:javascript
复制
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.util.List"%>  
<!DOCTYPE html>  
<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <title>JSP Page</title>  
    </head>  
    <body>  
    <c:forEach items="${rows}" var="row">
 <c:out value="${row.name}" />
 </c:forEach>
<c:if test="${not empty error}">Error: ${error}</c:if>

    </body>  
</html>  

Controller.java

代码语言:javascript
复制
public class Controller extends HttpServlet {


protected void doGet(HttpServletRequest request, HttpServletResponse response) 

throws ServletException, IOException {

try {
    List<Row> rows = Row.list();
    //request.getSession().setAttribute("rows", rows);
    request.setAttribute("rows", rows);
 } catch (SQLException e) {
    request.setAttribute("error", "Retrieving rows failed.");
    e.printStackTrace();
}

 catch (Exception e) {
    e.printStackTrace();
}
finally {System.out.print("servlet");}
request.getRequestDispatcher("page.jsp").forward(request, response);
}
}

Row.java

代码语言:javascript
复制
import javax.naming.*;
import javax.sql.*;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class Row { 
    private String name;

private String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public static List<Row> list() throws SQLException {
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    List<Row> rows = new ArrayList<Row>();

    try {
        Context initCtx = new InitialContext();
        Context envCtx = (Context) initCtx.lookup("java:comp/env");
        DataSource ds = (DataSource)
          envCtx.lookup("jdbc/TestDB");
         connection = ds.getConnection();
        statement = connection.createStatement();
        resultSet = statement.executeQuery("select id, name from account");
        while (resultSet.next()) {
            Row row = new Row();
            row.setName(resultSet.getString("name"));
            rows.add(row);
        }
    } catch(Exception e) {
        e.printStackTrace();
    }

    finally {
        if (resultSet != null) try { resultSet.close(); } 
 catch (SQLException logOrIgnore) {}
        if (statement != null) try { statement.close(); } 
 catch (SQLException logOrIgnore) {}
        if (connection != null) try { connection.close(); } 
 catch (SQLException logOrIgnore) {}
    }

    return rows;
}
}

非常感谢穆罕默德

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-28 22:35:55

你的getter是private

代码语言:javascript
复制
private String getName() {
    return name;
}

它是不可见的

将其更改为public

代码语言:javascript
复制
public String getName() {
    return name;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9490778

复制
相关文章

相似问题

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