在我的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。如果处理Exception,则不会调用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)
.......
答案 0 :(得分:0)
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