Reputation: 45
i hope everyone is well.
I come from a PHP background and recently I have had to do some work on a project based on Java - I then found out about JSP pages which was quite similar to PHP. I have tried to make a page which has a "String" variable declared, which is called account. I then check if the account is an administrator, if so they can see the admin menus. However, it works fine for me in firefox and chrome, but customers using the same browser are seeing a 500 error. Please see details below from the logs, i have no idea what it means but i do know a simple if statement shouldn't cause it (stupid language).
Mar 06, 2014 8:51:59 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/test] threw exception [An exception occurred processing JSP page /test.jsp at line 126
123: </ul>
124: </li>
125: <%
126: if (account.equals("sysadmin")) { %>
127: <li>
128: <a href="#" target="_gts">AssetTrack</a>
129: <ul>
Stacktrace:] with root cause
java.lang.NullPointerException
at org.apache.jsp.test_jsp._jspService(test_jsp.java:203)
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.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
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:409)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Any ideas let me know, before i go insane! Thanks,
Paul
Upvotes: 0
Views: 645
Reputation: 430
When ever you get a NullPointerException as in this case, you must be calling some function on a null. In your code
if (account.equals("sysadmin")) {
NullPointerException has occured because account may be null.
so before using this line
if (account.equals("sysadmin")) {
You should check if account is not null Like below
if(account!=null) { if (account.equals("sysadmin")) {
Means you should call equals function only after confirming account is not null.
Hope it helps!
Upvotes: 0
Reputation: 6132
use this method to avoid the null pointer expception:
if(account!=null && !account.toString().equalsIgnoreCase(""))
Upvotes: 0
Reputation: 8207
Try this ,
if ((null!=account) && (account.equals("sysadmin")))
because it says , you have null pointer exception
. so you should check whether account
is not null
Hope it helps !
Upvotes: 1