user2528061
user2528061

Reputation: 47

Send data from servlet to jsp

I tried to send a list from my servlet to a jsp page. This is the servlet code:

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);

The jsp code:

<%
    QueryResultList<Entity> result = request.getAttribute("postList");
    for (Entity entity : results) {           
        <b> IT WORRRKKKK !!! </b> <br>
    }
%>

But I get an error

EDIT : I added

<%@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.*" %>

And now i get a new error

An error occurred at line: 37 in the jsp file: /tublr.jsp Type mismatch: cannot convert from Object to QueryResultList ..... Caused by:

org.apache.jasper.JasperException: Unable to compile class for JSP:

I m do it for the school and we have to di it like this now , we have to use java in the jsp page.

Upvotes: 0

Views: 2615

Answers (5)

Rohan
Rohan

Reputation: 3078

You need to cast list obtained from request.getAttribute("postList") to 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>

    }
%>

For more about expression

Upvotes: 0

Lone Developer
Lone Developer

Reputation: 616

Have you imported QueryResultList in your jsp?

Upvotes: 0

kosa
kosa

Reputation: 66637

1) You need to add import statements at top of the JSP.

Example:

<%@ page import="java.util.List" %>

2) It is NOT good practice to have Java code directly embedded in JSP

Read more here on SO Wiki

Upvotes: 2

darijan
darijan

Reputation: 9775

Don't do any coding on JSP page. There is a JSTL library for this kind of stuff, and to iterate and display stuff you should use forEach tag:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

and for loop

<x:forEach select="${postList}" var="item">
    ... code
</x:forEach>

Upvotes: 1

TroyAndAbed
TroyAndAbed

Reputation: 301

You forgot <% %> for the html code

<%
   QueryResultList<Entity> result = request.getAttribute("postList");

   for (Entity entity : results) {           

          %> <b> IT WORRRKKKK !!! </b> <br><%

   }

%>

Upvotes: 0

Related Questions