MyFaces Core
  1. MyFaces Core
  2. MYFACES-3101

NavigationHandlerImpl throws NullpointerException if view is expired

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.4
    • Fix Version/s: 2.0.6
    • Component/s: General
    • Labels:
      None

      Description

      I tried to use the NavigationHandler inside a Faces exception handler to deal with ViewExpiredException as mentioned here: http://www.nfjsone.com/blog/ed_burns/2009/09/dealing_gracefully_with_viewexpiredexception_in_jsf2.

      The example does not work with myfaces, because org.apache.myfaces.application.NavigationHandlerImpl throws a NullpointerException while handleNavigation() is called.
      The exception occurs in line 160: String viewId = facesContext.getViewRoot().getViewId();

      I think the cause is that the viewroot is not set anymore when the ViewExpiredException is thrown.

      The official API for NavigationHandler.handleNavigation tells, that the NullpointerException is thrown only if the given facescontext is null.
      NullPointerException - if context is null

      1. MYFACES-3101.patch
        4 kB
        Martin Kočí
      2. MYFACES-3101-v2.patch
        6 kB
        Martin Kočí

        Issue Links

          Activity

          Hide
          Martin Stockhammer added a comment -

          I tried the patch. It works for normal page requests. But with an AJAX call I get another NPE.

          The NPE occurs in handleNavigation on:

                          PartialViewContext partialViewContext = facesContext.getPartialViewContext();
                          if ( partialViewContext.isPartialRequest() && 
                               !partialViewContext.isRenderAll() && 
                               !facesContext.getViewRoot().getViewId().equals(newViewId))
          

          I think its the facesContext.getViewRoot().getViewId()

          Show
          Martin Stockhammer added a comment - I tried the patch. It works for normal page requests. But with an AJAX call I get another NPE. The NPE occurs in handleNavigation on: PartialViewContext partialViewContext = facesContext.getPartialViewContext(); if ( partialViewContext.isPartialRequest() && !partialViewContext.isRenderAll() && !facesContext.getViewRoot().getViewId().equals(newViewId)) I think its the facesContext.getViewRoot().getViewId()
          Hide
          Martin Kočí added a comment -

          In reply to comment #1:
          > I tried the patch. It works for normal page requests. But with an AJAX call I
          > get another NPE.

          Yes, I know about that, I'm working on it. Simple if not null will not help there; I'm going to create new issue for it.

          Show
          Martin Kočí added a comment - In reply to comment #1: > I tried the patch. It works for normal page requests. But with an AJAX call I > get another NPE. Yes, I know about that, I'm working on it. Simple if not null will not help there; I'm going to create new issue for it.
          Hide
          Martin Kočí added a comment -

          Martin, can you please try the second version of the patch? It should work for partial, but not with redirect, see MYFACES-3105.

          This is very naive patch based on not null checks. Before apply, we should investigate facesContext.viewRoot = null situation generally.

          Show
          Martin Kočí added a comment - Martin, can you please try the second version of the patch? It should work for partial, but not with redirect, see MYFACES-3105 . This is very naive patch based on not null checks. Before apply, we should investigate facesContext.viewRoot = null situation generally.
          Hide
          Martin Kočí added a comment -

          Patch commited in rev. 1095966, myfaces-2.0.6-SNAPSHOT.

          MYFACES-3105 needs to be done for full functionality.

          Show
          Martin Kočí added a comment - Patch commited in rev. 1095966, myfaces-2.0.6-SNAPSHOT. MYFACES-3105 needs to be done for full functionality.
          Hide
          Jakob Korherr added a comment -

          add relation link

          Show
          Jakob Korherr added a comment - add relation link
          Hide
          Jakob Korherr added a comment -

          since the patch has been commited, can we resolve this one, Martin?

          Show
          Jakob Korherr added a comment - since the patch has been commited, can we resolve this one, Martin?
          Hide
          Martin Stockhammer added a comment -

          Yes it can be resolved. Thank You!

          Show
          Martin Stockhammer added a comment - Yes it can be resolved. Thank You!
          Hide
          Jakob Korherr added a comment -

          resolved

          Show
          Jakob Korherr added a comment - resolved
          Hide
          alex musort added a comment -

          Hello...

          I'm new using this technology and it's nice to see the problem I'm facing is solved.

          Could anyone tell me where can I get the jars files with the solution implemented??

          thx

          Show
          alex musort added a comment - Hello... I'm new using this technology and it's nice to see the problem I'm facing is solved. Could anyone tell me where can I get the jars files with the solution implemented?? thx
          Hide
          Jakob Korherr added a comment -

          Hi,

          Because there was no release since the patch was committed, you will have to use 2.0.6-SNAPSHOT. You can get it from our snapshots repo (see [1]) our by checking out current20 (see [2]) using svn checkout and building it yourself using maven!

          [1] https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/
          [2] https://svn.apache.org/repos/asf/myfaces/current20/

          Show
          Jakob Korherr added a comment - Hi, Because there was no release since the patch was committed, you will have to use 2.0.6-SNAPSHOT. You can get it from our snapshots repo (see [1] ) our by checking out current20 (see [2] ) using svn checkout and building it yourself using maven! [1] https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/ [2] https://svn.apache.org/repos/asf/myfaces/current20/
          Hide
          alex musort added a comment -

          Hi Jakob

          I downloaded these jar files:
          https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/myfaces-api/2.0.6-SNAPSHOT/myfaces-api-2.0.6-20110501.000939-11.jar
          https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/myfaces-impl/2.0.6-SNAPSHOT/myfaces-impl-2.0.6-20110502.150311-11.jar

          And I replace them in my project but I'm getting the following errror:

          javax.faces.view.facelets.TagException
          /prototipo/altaEmpleados.xhtml at line 69 and column 15 <f:metadata> Parent UIComponent j_id826412481_721d0ace should be instance of UIViewRoot

          What am I doing wrong??? Or what else do I need to do because besides the error I mentioned above, I'm still getting the nullpointerexception error

          java.lang.NullPointerException
          at org.apache.myfaces.context.servlet.PartialViewContextImpl.getPartialResponseWriter(PartialViewContextImpl.java:301)

          thx.

          Show
          alex musort added a comment - Hi Jakob I downloaded these jar files: https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/myfaces-api/2.0.6-SNAPSHOT/myfaces-api-2.0.6-20110501.000939-11.jar https://repository.apache.org/content/groups/snapshots/org/apache/myfaces/core/myfaces-impl/2.0.6-SNAPSHOT/myfaces-impl-2.0.6-20110502.150311-11.jar And I replace them in my project but I'm getting the following errror: javax.faces.view.facelets.TagException /prototipo/altaEmpleados.xhtml at line 69 and column 15 <f:metadata> Parent UIComponent j_id826412481_721d0ace should be instance of UIViewRoot What am I doing wrong??? Or what else do I need to do because besides the error I mentioned above, I'm still getting the nullpointerexception error java.lang.NullPointerException at org.apache.myfaces.context.servlet.PartialViewContextImpl.getPartialResponseWriter(PartialViewContextImpl.java:301) thx.
          Hide
          Leonardo Uribe added a comment -

          Just one note: myfaces jira should not be used to discuss this problems. Please ask this new issue on myfaces user or dev mailing list, and then if it is a confirmed bug raise a ticket here. Thanks!

          Show
          Leonardo Uribe added a comment - Just one note: myfaces jira should not be used to discuss this problems. Please ask this new issue on myfaces user or dev mailing list, and then if it is a confirmed bug raise a ticket here. Thanks!
          Hide
          Jakob Korherr added a comment -

          I agree with Leonardo.

          Alex, please write a mail describing your problem to users@myfaces.apache.org, thanks!

          Show
          Jakob Korherr added a comment - I agree with Leonardo. Alex, please write a mail describing your problem to users@myfaces.apache.org, thanks!

            People

            • Assignee:
              Unassigned
              Reporter:
              Martin Stockhammer
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development