gpt4 book ai didi

java - 如何在JSP中检索实体属性(从Servlet传递)

转载 作者:行者123 更新时间:2023-11-30 04:05:27 25 4
gpt4 key购买 nike

我在 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中给出的建议

最佳答案

您无法像这样直接访问属性,因为 EL 表达式将尝试在实体类上查找 getXXX() 方法,而由于您动态创建了实体,因此它没有该方法。

话虽如此,您想要做的事情是有一个解决方案的。如果您查看 PropertyContainer 的文档在Datastore类中,你会发现它有一个名为getProperties()的公共(public)方法返回 java.util.Map<java.lang.String,java.lang.Object>容器的所有属性。

这意味着您的实体将拥有一个名为 properties 的属性您可以使用它来进一步引用您在容器上定义的属性。

所以,在你的代码中,而不是 adminEntity.mail_id ,你应该这样做adminEntity.properties.mail_id它应该有效。以类似的方式,您可以将替代的 mail_id 替换为您可以定义的任何其他属性。

关于java - 如何在JSP中检索实体属性(从Servlet传递),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com