【发布时间】:2018-02-22 22:53:13
【问题描述】:
我正在使用 jsp 和 servlet 开发一个 Web 应用程序,我想显示我数据库中的所有记录以及表中的记录数。
我创建了一个 DAO,我在其中执行了查询,它们正确返回了数据,并将其放入一个名为 sessaoListaMotoristasTodos 和 totalMotorista 的 servlet 中的会话中。
但是在传递从会话中检索的值并分配变量时,没有分配值,调用的变量是List ListMotoristas和Integer totalRegistros给出了一个java.lang.NullPointerException强>
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MotoristasDAO dao= new MotoristasDAO();
MotoristasDAO dao2= new MotoristasDAO();
String pesquisa=request.getParameter("pesquisa");
try {
if(pesquisa==null){
pesquisa="";
}
Integer totalMotorista=dao.totalRegistros(pesquisa);
request.setAttribute("totalMotoristas", totalMotorista);
List listaMotoristas2=dao2.mostrarMotoristas();
request.setAttribute("sessaoListaMotoristasTodos", listaMotoristas2);
RequestDispatcher rd= request.getRequestDispatcher("/listaMotoristas2.jsp");
rd.forward(request, response);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro na servelet"+e);
}
}
JSP:
<%
List listaMotoristas=(List) request.getAttribute("sessaoListaMotoristasTodos");
Integer totalRegistros= (Integer) request.getAttribute("totalMotorista");
int totalPaginas=totalRegistros/limite;
if(totalRegistros%limite!=0){
totalPaginas++;
}else{
totalPaginas=0;
}
%>
【问题讨论】:
-
在这行代码中 request.setAttribute("sessaoListaMotoristasTodos", dao2);您将 dao2 设置为值,但在 jsp 中将其检索为 request.getAttribute("sessaoListaMotoristasTodos");它不会给你返回一个列表。它将返回 dao2,您需要从中获取列表,否则其他选项设置列表如下 request.setAttribute("sessaoListaMotoristasTodos", listaMotoristas2);在 jsp 中,您可以随时检索列表
-
另外,您没有在会话范围内设置变量,而是在请求范围内设置它们。但是在您的问题中,您说您正在会话范围内设置变量,这是错误的
-
Avinash Readdy 当我在变量中对冲请求范围时,该变量没有收到它得到 null 的值
-
只要检查 List listaMotoristas2=dao2.mostrarMotoristas();正在返回数据或空列表或 null。