检索隐藏字段值时,NPE 在 JSP 中发生

NPE occurs in jsp when retrieving hidden field value

本文关键字:JSP NPE 隐藏 字段 检索      更新时间:2023-09-26

在我的jsp中,我有两个输入字段和一个按钮。输入字段值设置为两个隐藏字段。按钮单击事件调用一个 js 函数,该函数尝试检索隐藏字段值,如下所示,

<% String wsdl1Path = request.getParameter("wsdl1path").toString();    
String    wsdl2Path = request.getParameter("wsdl2path").toString();    
WsdlCompare com = new WsdlCompare();    
String url = "";    
if ( wsdl1Path != null && wsdl2Path != null ) {    
url= com.compare(wsdl1Path,wsdl2Path);    
}
....

这会导致 NPE。如果处理异常,则不会调用 java 方法。注意:wsdl1path 和 wsdl2path:隐藏字段的 id

错误日志:

[2014-12-10 23:08:11,077] ERROR {org.apache.catalina.core.ApplicationDispatcher} -  Servlet.service() for servlet bridgeservlet threw exception
java.lang.NullPointerException
    at org.apache.jsp.wsdlcompare.index_jsp._jspService(index_jsp.java:179)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.wso2.carbon.ui.JspServlet.service(JspServlet.java:155)
    at org.wso2.carbon.ui.TilesJspServlet.service(TilesJspServlet.java:80)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
.......
String wsdl1Path = request.getParameter("wsdl1path");
String wsdl2Path = request.getParameter("wsdl2path");
WsdlCompare com = new WsdlCompare();    
String url = "";    
if ( wsdl1Path != null && wsdl2Path != null ) {    
  url= com.compare(wsdl1Path,wsdl2Path);    
}else{
  //Handle NPE
}

试试这个...

如果 wsdl1Path 或 wsdl2Path 变为 null,您将能够处理异常。

并且还尝试通过 GET 或 POST 方法传递您的两个参数,如果它的 GET 加载页面包含上述两个参数。

例如:index.jsp?wsdl1Path=wsdl1_path&wsdl2Path=wsdl2_path