使用 Hashmap 数据填充 JSP 表时继续获取 PropertyNotFoundException [重复]
Posted
技术标签:
【中文标题】使用 Hashmap 数据填充 JSP 表时继续获取 PropertyNotFoundException [重复]【英文标题】:Keep Getting PropertyNotFoundException when populating a JSP table with Hashmap Data [duplicate] 【发布时间】:2017-01-25 03:59:31 【问题描述】:我正在尝试使用 HashMap 的内容填充 JSP 表,但在第一次尝试在 JSP(firstName 属性)中引用它时,我不断收到 PropertyNotFoundExceptions。我尝试使用 var['key'] 和 var.value.key 在 EL 中引用它的方式,每次我得到一个 PropertyNotFoundException。这是我正在使用的代码:
JSP:
<c:forEach var="orders" items="$ orderList ">
<tr>
<td class="name">
<a href="">$ orders.firstName </a>
</td>
<td>$ orders.date </td>
<td>$ orders.product </td>
<td>$ orders.comments </td>
</tr>
</c:forEach>
设置属性的Servlet:
FormManager fm = new FormManager();
HashMap hm = fm.getOrder();
request.setAttribute("orderList", hm);
来自 FormManager 类:
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;
到目前为止,该代码可能存在一些问题,因为我仍在为家庭成员编写此代码。我所关心的是如何克服异常。谢谢!
【问题讨论】:
【参考方案1】:JSP 似乎假定orderList
属性将是映射的Collection
,但您提供的其他代码显示它被设置为具有String
键和String
值的单个映射,表示单个订单。由于orderList
是Map
,因此通过JSTL 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>
【讨论】:
感谢您的帮助,我知道我的代码中存在不一致之处,但没有看到。它是地图的集合和订单表。我犯了大错。以上是关于使用 Hashmap 数据填充 JSP 表时继续获取 PropertyNotFoundException [重复]的主要内容,如果未能解决你的问题,请参考以下文章