将对象从 jsp 传递到 Servlet 时出现 NullPointerException
NullPointerException when passing object from jsp to Servlet
我正在尝试使用会话对象将我的 DTO 对象从 jsp 传递到 servlet,但我最初遇到空指针异常我尝试使用请求对象,它给出了同样的错误因此我移动到会话对象.
在第一个 servlet 中
request.getSession().setAttribute("datadto", dataDTO);
request.getRequestDispatcher("success.jsp").forward(request, response);
在jsp
<%
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
在第二个 servlet 中
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("object");
MyService myService = ServiceFactory.getMyService();
myService.generateExcel(dataDTO); <--nullpointerexception
在谷歌搜索中我发现了以下内容 link
我按照他说的那样实现了我仍然得到空指针异常
在jsp
DataDTO dataDTO = myService.getData(keyword, nor);
String myObjectId = UUID.randomUUID().toString();
request.getSession().setAttribute(myObjectId, dataDTO);
request.setAttribute("myObjectId", myObjectId);
在第二个 servlet 中
String myObjectId = request.getParameter("myObjectId");
Object myObject = request.getSession().getAttribute(myObjectId);
DataDTO dataDTO = (DataDTO) myObject;
request.getSession().removeAttribute(myObjectId);
请帮助我。
您的 DTO 已在您的第一个 servlet 中的 session
中设置。因此,只需从您的 JSP 中 删除 这段代码,因为它实际上是通过将 DTO 设置为 null
.
从 session
中删除
<%
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
并使用原始 key 名称 datadto
在第二个 servlet 中检索 DTO
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("datadto");
在 JSP
你说的是 .
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
应该是request.getSession().getAttribute("datadto");
你的代码修改在下面一行
<%
DataDTO dataDTO = (DataDTO) request.getSession().getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
我正在尝试使用会话对象将我的 DTO 对象从 jsp 传递到 servlet,但我最初遇到空指针异常我尝试使用请求对象,它给出了同样的错误因此我移动到会话对象.
在第一个 servlet 中
request.getSession().setAttribute("datadto", dataDTO);
request.getRequestDispatcher("success.jsp").forward(request, response);
在jsp
<%
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
在第二个 servlet 中
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("object");
MyService myService = ServiceFactory.getMyService();
myService.generateExcel(dataDTO); <--nullpointerexception
在谷歌搜索中我发现了以下内容 link 我按照他说的那样实现了我仍然得到空指针异常
在jsp
DataDTO dataDTO = myService.getData(keyword, nor);
String myObjectId = UUID.randomUUID().toString();
request.getSession().setAttribute(myObjectId, dataDTO);
request.setAttribute("myObjectId", myObjectId);
在第二个 servlet 中
String myObjectId = request.getParameter("myObjectId");
Object myObject = request.getSession().getAttribute(myObjectId);
DataDTO dataDTO = (DataDTO) myObject;
request.getSession().removeAttribute(myObjectId);
请帮助我。
您的 DTO 已在您的第一个 servlet 中的 session
中设置。因此,只需从您的 JSP 中 删除 这段代码,因为它实际上是通过将 DTO 设置为 null
.
session
中删除
<%
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>
并使用原始 key 名称 datadto
HttpSession session=request.getSession(false);
DataDTO dataDTO = (DataDTO) session.getAttribute("datadto");
在 JSP
你说的是 .
DataDTO dataDTO = (DataDTO) request.getAttribute("datadto");
应该是request.getSession().getAttribute("datadto");
你的代码修改在下面一行
<%
DataDTO dataDTO = (DataDTO) request.getSession().getAttribute("datadto");
HttpSession session420 = request.getSession();
session420.setAttribute("object", dataDTO);
%>