/ / codice java non verrà eseguito in JSP - java, jsp

il codice java non verrà eseguito in JSP - java, jsp

Ho una pagina JSP con due schede e ci sto provandoper eseguire del codice Java nella seconda scheda ma continuo a ricevere un'eccezione puntatore null. Giuro che il mio codice Java è corretto ma la seconda scheda non verrà visualizzata.

<%
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 per qualche motivo non piace l'istruzione char né piace l'istruzione if. Questo è il mio stacktrace

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)

Apprezzo qualsiasi aiuto, Grazie

risposte:

1 per risposta № 1

La linea che genera NullPointerException è la linea con fn.toCharArray (); Ciò implica che fn è nullo.

Provare

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

1 per risposta № 2

Sì. fn è zero.

// 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 per risposta № 3

Prima di fare fn.toCharArray () controlla se fn è nullo o meno. Lo controlli più tardi. Ma se fn è nullo, otterrai l'eccezione solo su fn.toCharArray () e il resto del codice non verrà eseguito.


0 per risposta № 4

Quando cambi scheda, potresti perdere datiambito di richiesta (solo un'ipotesi). Come esperimento, puoi invece considerare di inserire i dati nell'ambito della sessione. Se funziona, puoi considerare il tempo o meno il suo valore per lasciarlo come ambito di sessione.