You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Paul Nicolucci <pn...@us.ibm.com> on 2012/05/09 07:58:43 UTC

Implicit navigation issue with Faces Servlet prefix mapping


Hello All,

I've come to a problem and wanted to discuss it with the community to get
your input and make sure I'm debugging this correctly.

I have an application which was posted in MyFaces-3530
(ViewExpiredException.war) which uses a custom ExceptionHandler to deal
with a ViewExpiredException.  Everything looks to be working as expected
with this when I'm using a Faces Servlet Mapping such
as the following (suffix mapping):

	<servlet-mapping>
    		<servlet-name>Faces Servlet</servlet-name>
   		<url-pattern>*.jsf</url-pattern>
 	 </servlet-mapping>


However if I use something such as this (prefix mapping):

	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>/f/*</url-pattern>
	</servlet-mapping>

I get the following exception when doing implicit navigation in my
Exception Handler such as:

	nav.handleNavigation(fc, null, "viewExpired");  // viewExpired.xhtml
exists in the web application

Exception:
	Caused by: org.apache.myfaces.lifecycle.ViewNotFoundException: A view
is required to execute RENDER_RESPONSE(6)
	at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute
(RenderResponseExecutor.java:62)
	at org.apache.myfaces.lifecycle.LifecycleImpl.render
(LifecycleImpl.java:239)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)

This happens due to the following fix:
https://issues.apache.org/jira/browse/MYFACES-3188

Is this working as designed or a bug?  It seems we are in accordance with
the Spec, specifically Section 7.5.2, it just seems odd to me that we can't
use implicit navigation such as "viewExpired" when we use prefix mapping
and we need
to use "viewExpired.xhtml", whereas with suffix mapping "viewExpired" works
just fine since we end up using the default facelet suffix (.xhtml) and
finding the resource.

Thoughts?

Thanks,

Paul Nicolucci

Re: Implicit navigation issue with Faces Servlet prefix mapping

Posted by Paul Nicolucci <pn...@us.ibm.com>.
I'm going to open a JIRA bug for this issue.  I've done a bunch of
debugging and I've narrowed it down.  I'll document my findings in the
issue, I have a couple of questions I
can ask there and we can come to a solution.

Thanks,

Paul Nicolucci


                                                                           
             Leonardo Uribe                                                
             <lu4242@gmail.com                                             
             >                                                          To 
                                       MyFaces Development                 
             05/09/2012 07:22          <de...@myfaces.apache.org>            
             AM                                                         cc 
                                                                           
                                                                   Subject 
             Please respond to         Re: Implicit navigation issue with  
                 "MyFaces              Faces Servlet prefix mapping        
               Development"                                                
             <dev@myfaces.apac                                             
                  he.org>                                                  
                                                                           
                                                                           
                                                                           




Hi

It seems we have here an inconsistency, probably because the viewId is
supposed to start with /, but it seems the reference implementation
assume viewId without / are valid too. I'll check that part but I
don't have time for now, so please be patient. It will take some time.

regards,

Leonardo Uribe

2012/5/9 Paul Nicolucci <pn...@us.ibm.com>:
> Hello All,
>
> I've come to a problem and wanted to discuss it with the community to get
> your input and make sure I'm debugging this correctly.
>
> I have an application which was posted in MyFaces-3530
> (ViewExpiredException.war) which uses a custom ExceptionHandler to deal
with
> a ViewExpiredException.  Everything looks to be working as expected with
> this when I'm using a Faces Servlet Mapping such
> as the following (suffix mapping):
>
> <servlet-mapping>
>     <servlet-name>Faces Servlet</servlet-name>
>     <url-pattern>*.jsf</url-pattern>
>   </servlet-mapping>
>
>
> However if I use something such as this (prefix mapping):
>
> <servlet-mapping>
> <servlet-name>Faces Servlet</servlet-name>
> <url-pattern>/f/*</url-pattern>
> </servlet-mapping>
>
> I get the following exception when doing implicit navigation in my
Exception
> Handler such as:
>
> nav.handleNavigation(fc, null, "viewExpired");  // viewExpired.xhtml
exists
> in the web application
>
> Exception:
> Caused by: org.apache.myfaces.lifecycle.ViewNotFoundException: A view is
> required to execute RENDER_RESPONSE(6)
> at
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute
(RenderResponseExecutor.java:62)
> at org.apache.myfaces.lifecycle.LifecycleImpl.render
(LifecycleImpl.java:239)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
>
> This happens due to the following fix:
> https://issues.apache.org/jira/browse/MYFACES-3188
>
> Is this working as designed or a bug?  It seems we are in accordance with
> the Spec, specifically Section 7.5.2, it just seems odd to me that we
can't
> use implicit navigation such as "viewExpired" when we use prefix mapping
and
> we need
> to use "viewExpired.xhtml", whereas with suffix mapping "viewExpired"
works
> just fine since we end up using the default facelet suffix (.xhtml) and
> finding the resource.
>
> Thoughts?
>
> Thanks,
>
> Paul Nicolucci


Re: Implicit navigation issue with Faces Servlet prefix mapping

Posted by Leonardo Uribe <lu...@gmail.com>.
Hi

It seems we have here an inconsistency, probably because the viewId is
supposed to start with /, but it seems the reference implementation
assume viewId without / are valid too. I'll check that part but I
don't have time for now, so please be patient. It will take some time.

regards,

Leonardo Uribe

2012/5/9 Paul Nicolucci <pn...@us.ibm.com>:
> Hello All,
>
> I've come to a problem and wanted to discuss it with the community to get
> your input and make sure I'm debugging this correctly.
>
> I have an application which was posted in MyFaces-3530
> (ViewExpiredException.war) which uses a custom ExceptionHandler to deal with
> a ViewExpiredException.  Everything looks to be working as expected with
> this when I'm using a Faces Servlet Mapping such
> as the following (suffix mapping):
>
> <servlet-mapping>
>     <servlet-name>Faces Servlet</servlet-name>
>     <url-pattern>*.jsf</url-pattern>
>   </servlet-mapping>
>
>
> However if I use something such as this (prefix mapping):
>
> <servlet-mapping>
> <servlet-name>Faces Servlet</servlet-name>
> <url-pattern>/f/*</url-pattern>
> </servlet-mapping>
>
> I get the following exception when doing implicit navigation in my Exception
> Handler such as:
>
> nav.handleNavigation(fc, null, "viewExpired");  // viewExpired.xhtml exists
> in the web application
>
> Exception:
> Caused by: org.apache.myfaces.lifecycle.ViewNotFoundException: A view is
> required to execute RENDER_RESPONSE(6)
> at
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:62)
> at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
>
> This happens due to the following fix:
> https://issues.apache.org/jira/browse/MYFACES-3188
>
> Is this working as designed or a bug?  It seems we are in accordance with
> the Spec, specifically Section 7.5.2, it just seems odd to me that we can't
> use implicit navigation such as "viewExpired" when we use prefix mapping and
> we need
> to use "viewExpired.xhtml", whereas with suffix mapping "viewExpired" works
> just fine since we end up using the default facelet suffix (.xhtml) and
> finding the resource.
>
> Thoughts?
>
> Thanks,
>
> Paul Nicolucci