Struts 2
  1. Struts 2
  2. WW-2572

StrutsNavigationHandler act as active navigation handler even for a pure jsf requests targetted at myfaces Navigation Handler

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Critical Critical
    • Resolution: Fixed
    • Affects Version/s: 2.0.11.1
    • Fix Version/s: 2.1.2
    • Component/s: Integration, Other
    • Labels:
      None
    • Environment:

      windows 2000 desktop, jdk1.5.0_10 and wintel86

    • Flags:
      Important

      Description

      What is being attempted in the same web application (.war file)

      1. set of jsf (jsp)pages processed through the struts2 and jsf (myfaces) lifecycle as in the showcase example
      2. another set of jsf (jsp) pages processed only through the pure jsf lifecycle (myfaces impl)

      configured the request pattern in the web.xml to handle pure jsf requests (with pattern like *.jsfaces)

      when requesting a page like example.jsfaces the myfaces handles upto the point of render phase then the flow is handed over to the StrutsNavigationHandler there by resulting in a null pointer exception for some reason, although the faces-config.xml has the appropriate navigation rule for requests coming in from example.jsfaces

      from the log file:
      2008-04-02 20:45:56,520 DEBUG (org.apache.myfaces.application.ApplicationImpl:179) - set NavigationHandler = org.apache.myfaces.application.NavigationHandlerImpl

      2008-04-02 20:46:00,739 DEBUG (org.apache.myfaces.application.ApplicationImpl:179) - set NavigationHandler = org.apache.struts2.jsf.StrutsNavigationHandler

      here is the stack trace:

      SEVERE: Servlet.service() for servlet faces threw exception
      java.lang.NullPointerException
      at org.apache.struts2.jsf.StrutsNavigationHandler.handleNavigation(StrutsNavigationHandler.java:62)
      at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:84)
      at javax.faces.component.UICommand.broadcast(UICommand.java:106)
      at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
      at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:330)
      at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:84)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:595)
      looks like the above use case can not handled when there is a requirement for pure jsf lifecycle and struts2-jsf integrated processing. is there a workaround /configuration where both the type of requests could be processed

      struts2-jsf-plugin-2.0.11.1.jar and myfaces-impl-1.1.2.jar are in the classpath

        Activity

        Hide
        Don Brown added a comment -

        Good catch, thanks for reporting this.

        Show
        Don Brown added a comment - Good catch, thanks for reporting this.

          People

          • Assignee:
            Don Brown
            Reporter:
            sarav
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development