Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当I';我正在调用一个方法_Java_Jsp_Servlets_Nullpointerexception_Entity - Fatal编程技术网

Java 当I';我正在调用一个方法

Java 当I';我正在调用一个方法,java,jsp,servlets,nullpointerexception,entity,Java,Jsp,Servlets,Nullpointerexception,Entity,我已经创建了一个从数据库中选择所有玩家的实体: @NamedQueries({ @NamedQuery(name ="player.findAll", query = "select p from Player p") }) 然后我创建了一个无状态bean及其实现该方法的接口 private EntityManager em; ... public List<Player> findAllPlayers(){ TypedQuery <Player>

我已经创建了一个从数据库中选择所有玩家的实体:

@NamedQueries({
@NamedQuery(name ="player.findAll",
        query = "select p from Player p")
})
然后我创建了一个无状态bean及其实现该方法的接口

private EntityManager em;
...
public List<Player> findAllPlayers(){
    TypedQuery <Player> query = 
            em.createNamedQuery("player.findAll", Player.class);
    List<Player> results = query.getResultList();
    return results;
}
然后是JSP文件:

<form action = "GetAllPlayersServlet" method = "post">
<input type = "submit" name = "submit" value = "Show all"></input></td>
                <td style = "width: 2px; "></td>

                <% FacadeLocal facade = (FacadeLocal)request.getAttribute("facade"); %>
            <td><input type = "text" name= "showAll" value = "<%= facade.findAllPlayers()%>">
好的。我正在编辑我的问题。 通过执行以下操作,我成功地在servlet中显示了数据库中的所有数据:

protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
    List<Player> allPlayers = facade.findAllPlayers();

    for (Player p1 : allPlayers) {

        out.println("<h4>Founded: " + p1.getClass().getSimpleName());
        out.println(" Id: " + p1.getId());
        out.println(" - " + p1.getNickname());
        out.println(" - " + p1.getLocation());
        out.println(" - " + p1.getChampion() + "</h4>");
}
}
protectedvoid服务(HttpServletRequest),
HttpServletResponse响应)引发ServletException,IOException{
PrintWriter out=response.getWriter();
列出allPlayers=facade.findAllPlayers();
对于(玩家p1:所有玩家){
out.println(“创建:+p1.getClass().getSimpleName());
out.println(“Id:+p1.getId());
out.println(“-”+p1.get昵称());
out.println(“-”+p1.getLocation());
out.println(“-”+p1.getChampion()+”);
}
}

现在我想知道如何使用doPost方法将列表传递给JSP

您需要检查
facade
是否为空:

 <%
 FacadeLocal facade = (FacadeLocal)request.getAttribute("facade"); 
 if(facade == null)
 {
   out.print("<td><input type='text' name='showAll' value='' />");
 }
 else
 {
   out.print("<td><input type='text' name='showAll' value='"+facade.findAllPlayers()+"' />");
 }
 %>


如果这不能解决问题,请在对可能为空的变量使用点运算符的任何位置执行类似操作。

确保在使用点运算符之前初始化变量。否则,
playerEAO.findAllPlayers()在功能上可能变成
null.findAllPlayers()这就是空指针异常的含义。但是,当我只想显示一个具有特定id的播放器时,为什么我可以执行相同的代码?程序执行,但没有显示任何内容,这意味着facade可能为空?是的
request.getAttribute
将始终返回null,除非您在servlet中使用了
request.setAttribute
,然后将其转发给JSP。否则,您可能是指
request.getParameter
噢,我明白了。您的问题是调用
request.setAttribute(“facade”,f)但后来没有转发。谢谢你的贡献developerjk。我尝试通过执行以下操作转发请求:RequestDispatcher rd=getServletContext().getRequestDispatcher(“/ShowAllPlayers.jsp”);转发(请求、响应);但是facade.findAllplayers()仍然为null。
<form action = "GetAllPlayersServlet" method = "post">
<input type = "submit" name = "submit" value = "Show all"></input></td>
                <td style = "width: 2px; "></td>

                <% FacadeLocal facade = (FacadeLocal)request.getAttribute("facade"); %>
            <td><input type = "text" name= "showAll" value = "<%= facade.findAllPlayers()%>">
ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/PlayerClientProject].[jsp]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet jsp threw exception: java.lang.NullPointerException
at org.apache.jsp.ShowAllPlayers_jsp._jspService(ShowAllPlayers_jsp.java:81)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) [jbossweb-7.0.13.Final.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) [jbossweb-7.0.13.Final.jar:]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326) [jbossweb-7.0.13.Final.jar:]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:253) [jbossweb-7.0.13.Final.jar:]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
protected void service(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
    List<Player> allPlayers = facade.findAllPlayers();

    for (Player p1 : allPlayers) {

        out.println("<h4>Founded: " + p1.getClass().getSimpleName());
        out.println(" Id: " + p1.getId());
        out.println(" - " + p1.getNickname());
        out.println(" - " + p1.getLocation());
        out.println(" - " + p1.getChampion() + "</h4>");
}
}
 <%
 FacadeLocal facade = (FacadeLocal)request.getAttribute("facade"); 
 if(facade == null)
 {
   out.print("<td><input type='text' name='showAll' value='' />");
 }
 else
 {
   out.print("<td><input type='text' name='showAll' value='"+facade.findAllPlayers()+"' />");
 }
 %>