繁体   English   中英

传递ListArray <Object> 从Servlet到JSP在Windows中运行,但在Linux中失败

[英]Passing ListArray<Object> from Servlet to JSP working in Windows but failing in Linux

一种将ListArray从我的Servlet传递到JSP页面的方法在Windows开发环境中运行良好,但在Linux环境中却失败了。

ListArray包含一组全局值,因此我立即在Servlet类中声明它,并在Init方法中填充它。

在doGet和doPost方法中,我将其分配给请求对象上的属性:

    request.setAttribute("servers", servers);
    request.getRequestDispatcher(page).forward(request, response);

在.jsp中,我对其进行检索和处理:

<%

    ArrayList<Server> servers = (ArrayList<Server>) request.getAttribute("servers");    

for(Server server : servers){

            out.print("<p><form method='post' action='Controller' encType='multipart/form-data'><input type='hidden' name='action' value='control'/>");
            out.print("<input type='hidden' name='name' value='"
                    + server.getName() + "'/>");
            out.print("<input type='hidden' name='url' value='"
                    + server.getUrl() + "'/>");
            out.print("<input type='hidden' name='local' value='"
                    + server.getLocation() + "'/>");
            out.print("<input type='hidden' name='port' value='"
                    + server.getPort() + "'/>");
            out.print("<input type='submit' value='Select'/><span class='label'> "
                    + server.getName() + " </span></form><p>"); 

}
    %>

首先,是的, 我知道scriptlet已过时 ,了解JSTL是本季度要做的事情。

在Windows中,这成功地将Server对象处理到一个整洁的列表中。 在Linux中,失败如下:

org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 82

79:     
80:     ArrayList<Server> servers = (ArrayList<Server>) request.getAttribute("servers");        
81:         
82: for(Server server : servers){
83:             
84:             out.print("<p><form method='post' action='Controller' encType='multipart/form-data'><input type='hidden' name='action' value='control'/>");
85:             out.print("<input type='hidden' name='name' value='"


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NullPointerException
    org.apache.jsp.index_jsp._jspService(index_jsp.java:151)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.55 logs.

我在两个环境中都运行Java 1.7.0_07。

关于为什么这种通过arraylist的方法在Linux中失败的想法?

关于为什么这种通过arraylist的方法在Linux中失败的想法?

一种可能性是arraylist为null或其元素之一或其元素的字段之一为null 我怀疑这是在servlet中发生的...在转发请求之前。

但是,对此进行推测并不能​​帮助您解决问题。 您需要做的是:

  • 将堆栈跟踪与已编译的JSP代码中的Java行号进行比较。
  • 找出导致异常的Java代码。
  • 涂一些逻辑推理的问题,制定出 null是...(最终),它从何而来。

如果逻辑推理不起作用,请添加一些跟踪记录以找出null的来源。

不幸的是,我们没有证据为您执行此操作。

但好消息是您应该能够自己弄清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM