2016-07-27 8 views
0

Ich kann übergeben Integer, String, Float, etc .. aber wenn ich mein definiertes Objekt übergeben (Employee) die JSP empfängt es als null.Wie übergeben Sie Objekte von Servlets an JSP?

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1" import="com.rahul.model.bean.*"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Search Result</title> 
</head> 
<body> 
<% 
    Employee record = (Employee) request.getAttribute("searchResult"); 
    out.println(record); 
%> 

<table border="1"> 
    <tr> 
     <th>Id</th> 
     <th>Name</th> 
     <th>Designation</th> 
     <th>Department</th> 
     <th>Salary</th> 
    </tr> 
</table> 
</body> 
</html> 

And My Controlleer doGet is: 

protected void doGet(HttpServletRequest request, HttpServletResponse  response)throws ServletException, IOException { 
    EmployeeDAO dao = new EmployeeDAOImpl(); 
    Employee result = dao.search(request.getParameter("id")); 

//  PrintWriter pw=response.getWriter(); 
//  pw.println(result); 

    ServletContext app = getServletContext(); 
    app.setAttribute("searchResult", result); 
    System.out.println("Emp= "+result); 
    response.sendRedirect("./searchview.jsp"); 
} 
+0

Sind Sie sicher, dass das Anfrageattribut "searchResult" existiert? – reporter

+0

Setzen Sie dieses Attribut irgendwann? Und stellen Sie es auf die richtige Anfrage ein? – Thomas

+0

protected void doGet (HttpServletRequest-Anforderung, HttpServletResponse-Antwort) löst ServletException, IOException {\t \t EmployeeDAO dao = new EmployeeDAOImpl(); \t \t Employee result = dao.search (request.getParameter ("id")); \t \t \t \t ServletKontext app = getServletContext(); \t \t app.setAttribute ("searchResult", Ergebnis); \t \t System.out.println ("Emp =" + Ergebnis); \t \t response.sendRedirect ("./ searchview.jsp"); \t} –

Antwort

1

Versuchen Sie folgendes:

GreetingsServlet.java

import java.io.IOException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/greetings") 
public class GreetingsServlet extends HttpServlet { 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     String message = "Hello, World"; 
     req.setAttribute("message", message); 
     RequestDispatcher dispatcher = req.getServletContext().getRequestDispatcher("/WEB-INF/jsp/greetings.jsp"); 
     dispatcher.forward(req, resp); 
    } 

} 

greetings.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
    </head> 
    <body> 
    <h1><%= request.getAttribute("message") %></h1> 
    </body> 
</html> 

Dies kann nicht mit sendRedirect arbeiten, obwohl, wie Sie im Grunde eine Rundreise machen zwischen dem Client und dem Server, über zwei Anfragen, nicht eine. Die erste Anfrage hat Ihren Parameter, aber da Ihr Client sie nicht speichert, ist sie verloren, wenn die Umleitung erfolgt. Sie sollten an Ihre JSP weiterleiten, es sei denn, das Servlet sollte nicht immer wieder ausgeführt werden (wie bei einer Datenbankeinfügung). Suchen Sie here, wenn Sie wirklich umleiten müssen.

Verwandte Themen