【问题标题】:How to resolve NullPointerException in JSP如何解决 JSP 中的 NullPointerException
【发布时间】:2018-02-22 22:53:13
【问题描述】:

我正在使用 jsp 和 servlet 开发一个 Web 应用程序,我想显示我数据库中的所有记录以及表中的记录数。

我创建了一个 DAO,我在其中执行了查询,它们正确返回了数据,并将其放入一个名为 sessaoListaMotoristasTodostotalMotorista 的 servlet 中的会话中。

但是在传递从会话中检索的值并分配变量时,没有分配值,调用的变量是List ListMotoristasInteger 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。

标签: java jsp servlets


【解决方案1】:
 MotoristasDAO dao2= new MotoristasDAO();
 List listaMotoristas2=dao2.mostrarMotoristas();

根据您的代码,您正在执行此操作

request.setAttribute("sessaoListaMotoristasTodos", dao2);

但你应该这样做

request.setAttribute("sessaoListaMotoristasTodos", listaMotoristas2);

或者这个

request.setAttribute("sessaoListaMotoristasTodos", dao2.mostrarMotoristas());

您应该在请求中设置列表 "listaMotoristas2" 而不是 "dao2"

现在在jsp中你的代码如下

List listaMotoristas=(List) request.getAttribute("sessaoListaMotoristasTodos");

这不会返回一个列表,它会返回 dao2

【讨论】:

  • 我按照您的建议进行了更改,但仍然出现同样的错误
  • 当我在变量中设置请求范围时,变量没有接收到它变为空的值
猜你喜欢
  • 2020-08-30
  • 2014-01-28
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2013-03-20
相关资源
最近更新 更多