我试图显示实体列表,但是我收到了这个错误:
javax.el.PropertyNotFoundException: Could not find property drug in class com.google.appengine.api.datastore.Entity
显示属性的方法是:
<c:forEach items="${drugtargets}" var="drugtarget">
<tr>
<td>${drugtarget.drug}</td>
<td>${drugtarget.target}</td>
</tr>
我检查了我的数据存储区和实体属性,但没有看到任何错误。我的属性是毒品和目标。你能告诉我应该怎么做吗?感谢。
Key drugKey = KeyFactory.createKey("DrugTarget", drug);
Entity drugtarget = new Entity("DrugTarget",drugKey);
drugtarget.setProperty("drug", drug);
drugtarget.setProperty("target", target);
答案 0 :(得分:5)
我不做GAE,但根据Entity
类的javadoc,它告诉我有一个getProperties()
method returning a Map<String, Object>
with all properties,那么你应该可以访问各个属性如下:
<td>${drugtarget.properties.drug}</td>
<td>${drugtarget.properties.target}</td>
无关具体问题,如果涉及用户控制的数据,请记住这会形成一个潜在的XSS攻击漏洞。您应该使用JSTL <c:out>
或fn:escapeXml()
转义用户控制的输入。
<td><c:out value="${drugtarget.properties.drug}" /></td>
<td><c:out value="${drugtarget.properties.target}" /></td>