0
Code is something like 

    2: <%
    3: String rolename = (String)session.getAttribute("roles");
    4: out.println("role is " + rolename);
    5: if(rolename.equals("MY_ROLE")){
    6: out.println("tension");
    7: }
    8: %>

Problem is: line 4 is printing value of rolename correctly i.e "MY_ROLE", but I am getting null pointer exception on line no 5, which I am assuming because of rolename is null.

Error is as below : 

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/fragments/menu.jspf at line 10

    7: <%
    8:    String rolename = (String)session.getAttribute("roles");
    9:    out.println("role is " + rolename);
    10:   if(rolename.equals("MY_ROLE")){
    11:       out.println("tension");
    12:   }
    13:%>

Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:229)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

java.lang.NullPointerException
    org.apache.jsp.WEB_002dINF.views.pages.view_jsp._jspService(view_jsp.java:106)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:229)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Please help.
user3679958
  • 1
  • 1
  • 1
  • Your issue is strange indeed. Unfortunately I do not know how to debug scriptlets, unless it works as regular java code. However, if you are starting out with jsp, you should note that the use of scriptlets are highly discouraged, and have been so for a very long time. Take a look at this post if you want to learn more about how you can use more up to date methods. I started out a couple of months ago, and this post really helped me. It was definitely worth the time to learn things properly: http://stackoverflow.com/questions/3177733/how-to-avoid-java-code-in-jsp-files?lq=1 – jumps4fun May 27 '14 at 14:23

1 Answers1

2

When you do String rolename = (String)session.getAttribute("roles"); the session parameter can be null, i.e. perhaps it was never set.

If that's the case then rolename will now be null and if(rolename.equals("MY_ROLE")){ will throw a NullPointerException because you are using a dot operator on a null variable, which is basically equivalent to doing null.equals("MY_ROLE").

There are a few ways to get around it:

  1. if(rolename!=null && rolename.equals("MY_ROLE")){
  2. if("MY_ROLE".equals(rolename)){

That is, either explicitly check for null, or reverse the order of the comparison and do the dot operator on the string literal.

developerwjk
  • 8,619
  • 2
  • 17
  • 33