簡體   English   中英

Java代碼無法在JSP中運行

[英]java code wont run in JSP

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

<%
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)

感謝您的幫助,謝謝

是。 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");
}

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

嘗試

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

在執行fn.toCharArray()之前,請檢查fn是否為null。 您稍后再檢查。 但是,如果fn為null,則只會在fn.toCharArray()上獲得異常,其余代碼將不會執行。

更改選項卡時,可能會丟失請求范圍內的數據(僅是猜測)。 作為實驗,您可以考慮將數據放入會話范圍。 如果可行,您可以考慮天氣的價值或不考慮天氣的價值,以將其保留為會話范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM