2013-12-18 140 views
0

我有一個JSP頁面有兩個選項卡,我試圖在第二個選項卡中運行一些Java代碼,但我不斷收到空指針異常。我發誓我的Java代碼是正確的,但第二個標籤不會顯示出來。java代碼將不會運行在JSP

<% 
String fn = request.getParameter("fn9"); 
String ln = request.getParameter("ln9"); 
String primaryEmail = request.getParameter("primaryemail9"); 

CreatingTheProviderFile ctpf = new CreatingTheProviderFile(); 

char[] c = fn.toCharArray(); 

if(fn != null){ 
    System.out.println("it is blank"); 
}else{ 
    System.out.println("it is something else"); 
} 

if(fn != ''){ 
ctpf.FillNameArray(fn, ln, primaryEmail); 
} 
%> 

JSP由於某種原因不喜歡char聲明,也不喜歡if聲明。這是我的堆棧跟蹤

Dec 18, 2013 11:37:33 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/TwoWayPortal] threw exception [An exception occurred processing JSP page /patient_discharge.jsp at line 800 

797:       
798:      // CreatingTheProviderFile ctpf = new CreatingTheProviderFile(); 
799:       
800:       char[] c = fn.toCharArray(); 
801:       
802:       System.out.println(c[0]); 
803:       // System.out.println(String.valueOf(fn.charAt(0))); 


Stacktrace:] with root cause 
java.lang.NullPointerException 
at org.apache.jsp.patient_005fdischarge_jsp._jspService(patient_005fdischarge_jsp.java:999) 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
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:728) 
at  

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:205) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
at  

org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:662) 

我感謝所有幫助, 謝謝

+0

似乎fn爲空。這意味着你沒有從請求中獲得它。 –

+0

我認爲,所以我給html值=「Shawn」添加了一個值。希望當頁面加載時,它將有一個值得使用。由於某種原因,我仍然得到空指針異常 – spike74

+0

你是如何添加它的?是fn9 = shawn? –

回答

1

引發NullPointerException的行是帶有fn.toCharArray()的行;這意味着fn爲空。

嘗試

if(fn != null){ 
    //do stuff here 
} 
1

是。 fn爲空。

// test for null, init to null if fn is null. 
char[] c = (fn != null) ? fn.toCharArray() : null; 

if (fn != null) { 
    System.out.println("it is not null"); 
    if (fn.length() > 0) { // fn != '' is illegal, could have used !fn.equals("") - 
         // note double quotes (not single). 
    ctpf.FillNameArray(fn, ln, primaryEmail); 
    } 
} else { 
    System.out.println("it is something else"); 
} 
1

做fn.toCharArray()之前檢查是否FN爲空或不是。您稍後檢查它。但是,如果fn爲null,則只會在fn.toCharArray()上發生異常,其餘代碼將不會執行。

0

當您更改選項卡時,您可能會丟失請求範圍中的數據(只是猜測)。作爲一個實驗,您可以考慮將數據放在會話範圍內。如果它有效,您可以根據天氣情況或不重視它將其作爲會話範圍。