使用Hashmap Data填充JSP表时,继续获取PropertyNotFoundException

时间:2016-09-16 20:31:37

标签: java jsp servlets

我正在尝试使用HashMap的内容填充JSP表,但是我在第一次尝试在JSP(firstName属性)中引用它时继续获取PropertyNotFoundExceptions。我尝试过使用var [' key']和var.value.key在EL中引用它的方法,每次我得到一个PropertyNotFoundException。以下是我使用的代码:

JSP:

FormManager fm = new FormManager();
HashMap hm = fm.getOrder();
request.setAttribute("orderList", hm);

设置属性的Servlet:

public HashMap getOrder() {
        dbm = new DatabaseManager();
        Statement stmt = null;
        String sql = "SELECT * FROM orders";
        HashMap<String, String> itemMap = new HashMap<String, String>();
        String[] keys = { "firstName", "lastName", "phone", "email" , "date", "product", "comments", "id" };

        dbm.setUrl("jdbc:mysql://localhost:3306/pattycakes");
        dbm.connect();
        try {
            stmt = dbm.getConn().createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData rsmd = rs.getMetaData();

            int columns = rsmd.getColumnCount();
            for (int i = 0; i < columns; i++) {
                rs.beforeFirst();
                rs.next();
                itemMap.put(keys[i], rs.getString(i + 1));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            dbm.disconnect(stmt, dbm.getConn());
        }
        return itemMap;
    }

从FormManager类:

PROC SQL;
    CONNECT TO ODBC (DATASRC='FAC Prod');
    CREATE TABLE ONE AS
        SELECT *
        FROM CONNECTION TO ODBC
        (EXEC FAC.USP_MASTERPATIENT '2014-01-01', '2014-01-05') AS ODBC;
    DISCONNECT FROM ODBC;
QUIT;

到目前为止,该代码可能存在一些问题,因为我仍在为家庭成员编写此代码。我所关心的是如何超越异常。谢谢!

1 个答案:

答案 0 :(得分:0)

JSP似乎假设orderList属性将是Collection个地图,但您提供的其他代码显示它被设置为具有String个键的单个地图和{ {1}}值,代表单个订单。由于StringorderList,因此通过JSTL Map对其进行迭代会生成foreach的实例,地图中的每个条目都会生成一个Map.Entry。这些条目确实没有firstName属性,也没有您尝试提取的任何其他属性。

由于不恰当命名的orderList属性实际上只为一个订单提供数据,因此对它的迭代没有意义。我倾向于认为您为该属性设置了错误的值,但如果它真的是您想要的那么您可能会在这些行中显示带有JSP代码的一个订单:

<!-- no foreach -->
<tr>
    <td class="name">
        <a href="">${ orderList["firstName"] }</a>
    </td>
    <td>${ orderList["date"] }</td>
    <td>${ orderList["product"] }</td>
    <td>${ orderList["comments"] }</td>
</tr>