2016-07-27 2 views
0

Я могу пройти Integer, String, Float и т. Д., Но когда я передаю свой определенный объект (Employee), JSP получает его как null.Как пройти объекты из сервлетов в 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

Вы уверены, что атрибут запроса "searchResult" существует? – reporter

+0

Вы задали этот атрибут в какой-то момент? И вы устанавливаете его по правильному запросу? – Thomas

+0

protected void doGet (запрос HttpServletRequest, ответ HttpServletResponse) вызывает ServletException, IOException {\t \t EmployeeDAO dao = new EmployeeDAOImpl(); \t \t Результат сотрудника = dao.search (request.getParameter («id»)); \t \t \t ServletContext app = getServletContext(); \t \t app.setAttribute ("searchResult", result); \t \t System.out.println ("Emp =" + result); \t \t response.sendRedirect ("./ searchview.jsp"); \t} –

ответ

1

Попробуйте это:

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> 

Это не может работать с sendRedirect, хотя, как вы в основном делает туда-обратно между клиентом и сервером, охватывая более двух запросов, а не один. Первый запрос имеет ваш параметр, но поскольку ваш клиент не сохраняет его, он теряется, когда происходит перенаправление. Вы должны переслать свой JSP, если только то, что сделано сервлетом, не должно выполняться снова и снова (например, вставка базы данных). Посмотрите here, если вам действительно нужно перенаправить.

Смежные вопросы