我尝试将servlet中的列表发送到jsp页面。这是servlet代码:
Query q = new Query("post").addSort("time", SortDirection.DESCENDING);
PreparedQuery pq = datastore.prepare(q);
QueryResultList<Entity> results = pq.asQueryResultList(fetchOptions);
for (Entity entity : results) {
System.out.println(entity.getProperty ("content"));
System.out.println(entity.getProperty ("time"));
}
req.setAttribute("postList",results);
req.getRequestDispatcher("/tublr.jsp").forward(req, resp);
jsp代码:
<%
QueryResultList<Entity> result = request.getAttribute("postList");
for (Entity entity : results) {
<b> IT WORRRKKKK !!! </b> <br>
}
%>
但是我收到了错误
编辑:我添加了
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.List,com.google.appengine.api.datastore.Query.SortDirection,com.google.appengine.api.datastore.*" %>
现在我收到了一个新错误
jsp文件中的第37行出现错误:/ tublr.jsp类型 mismatch:无法从Object转换为QueryResultList ..... 引起:
org.apache.jasper.JasperException:无法为JSP编译类:
我是为学校做的,我们现在必须这样做,我们必须在jsp页面中使用java。
答案 0 :(得分:2)
1)您需要在JSP顶部添加import
语句。
示例:
<%@ page import="java.util.List" %>
2)将Java代码直接嵌入JSP
中是 NOT 良好做法 上阅读更多内容答案 1 :(得分:1)
不要在JSP页面上进行任何编码。这种东西有一个JSTL库,要迭代和显示你应该使用forEach
标签的东西:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
和for循环
<x:forEach select="${postList}" var="item">
... code
</x:forEach>
答案 2 :(得分:0)
您是否在jsp中导入了QueryResultList
答案 3 :(得分:0)
你忘了&lt; %%&gt;对于HTML代码
<%
QueryResultList<Entity> result = request.getAttribute("postList");
for (Entity entity : results) {
%> <b> IT WORRRKKKK !!! </b> <br><%
}
%>
答案 4 :(得分:0)
您需要将从request.getAttribute("postList")
获得的列表投射到QueryResultList
。
<%
QueryResultList<Entity> result =(QueryResultList)request.getAttribute("postList");
for (Entity entity : result) {
// Your code goes here You can use <%= %> to print values.
// <b> IT WORRRKKKK !!! </b> <br>
}
%>
的更多信息