我在Servlet(实体列表)中创建了一个列表。我试图遍历列表并获取JSP中的属性
我能够遍历JSP中的列表,但不知道如何检索实体的属性。我在这里缺少什么?
将数据插入数据存储区的Servlet,
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
Entity adminUser = new Entity("AdminUser");
adminUser.setProperty("mail_id", "mymailid@gmail.com");
ds.put(adminUser);
创建列表的Servlet
public void doGet(..) {
...
PreparedQuery pq = ds.prepare(q);
List<Entity> adminList = pq.asList(FetchOptions.Builder.withLimit(10));
req.setAttribute("adminList", adminList);
resp.setContentType("text/html");
RequestDispatcher jsp = req.getRequestDispatcher("/WEB-INF/DisplayAdminPage.jsp");
jsp.forward(req, resp);
...
}
遍历列表的JSP
<c:forEach items="${adminList}" var="adminEntity">
<tr>
//This displays the entire entity, but not sure how to fetch
//the individual property??
<td>${fn:escapeXml(adminEntity)}</td>
</tr>
</c:forEach>
我也尝试过这样的东西来获取属性; $ { fn:escapeXml(adminEntity.mail_id)},但无效
PS:我已遵循此post
中的建议答案 0 :(得分:2)
您无法直接访问该属性,因为EL Expression将尝试在Entity类中查找getXXX()方法,因为您已动态创建实体,因此该方法没有。
话虽如此,有一个解决方案可以解决您想要做的事情。如果查看Datastore类的PropertyContainer
文档,您会发现它有一个名为getProperties()
的公共方法,它返回Container的所有属性的java.util.Map<java.lang.String,java.lang.Object>
。 / p>
这意味着您的实体将拥有一个名为properties
的属性,您可以使用它来进一步引用您在Container上定义的属性。
因此,在您的代码中,您应该执行adminEntity.mail_id
而不是adminEntity.properties.mail_id
,而它应该有效。以类似的方式,您可以将替换mail_id替换为您可能定义的任何其他属性。