Hi Martin<br><br>Yes, this one was settled on JSF 2.1 in this way:<br><br>1. Add this method to ViewHandler.<br><br>String deriveLogicalViewId(FacesContext context, String rawViewId)  <br><br>2. Fix ViewHandler.getViewDeclarationLanguage(FacesContext context, String viewId) method javador to specify the viewId to be used is the one after call deriveLogicalViewId<br>
<br>It was solved under this topic:<br><br>[jsr-314-open] 490-XmlViews Processing JSPX files as Facelets<br><br>best regards,<br><br>Leonardo Uribe<br><br><div class="gmail_quote">2011/2/7 Martin Marinschek <span dir="ltr">&lt;<a href="mailto:mmarinschek@apache.org">mmarinschek@apache.org</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Hi Leonardo,<br>
<br>
was this ever settled? Did you get the feedback you need? Did you open an issue?<br>
<br>
best regards,<br>
<br>
Martin<br>
<div><div></div><div class="h5"><br>
On Tue, Sep 14, 2010 at 3:30 AM, Leonardo Uribe &lt;<a href="mailto:lu4242@gmail.com">lu4242@gmail.com</a>&gt; wrote:<br>
&gt; Hi<br>
&gt;<br>
&gt; The current algorithm to check if a view with a specific viewId does not<br>
&gt; allow to add or extends a new ViewDeclarationLanguage using a new<br>
&gt; prefix/extension.<br>
&gt;<br>
&gt; This issue is related to<br>
&gt;<br>
&gt; <a href="https://issues.apache.org/jira/browse/MYFACES-2628" target="_blank">https://issues.apache.org/jira/browse/MYFACES-2628</a> Facelets ResourceSolver<br>
&gt; can&#39;t work<br>
&gt;<br>
&gt; and<br>
&gt;<br>
&gt; <a href="https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1567" target="_blank">https://javaserverfaces.dev.java.net/issues/show_bug.cgi?id=1567</a><br>
&gt;<br>
&gt; The problem resides on a &quot;hidden&quot; requeriment for Restore View Phase<br>
&gt; algorithm, that is ignored silently. On mojarra, this is the code on<br>
&gt; MultiViewHandler.getViewDeclarationLanguage:<br>
&gt;<br>
&gt;     public ViewDeclarationLanguage getViewDeclarationLanguage(FacesContext<br>
&gt; context,<br>
&gt;                                                               String viewId)<br>
&gt; {<br>
&gt;<br>
&gt;         String actualViewId = derivePhysicalViewId(context, viewId, false);<br>
&gt;         return vdlFactory.getViewDeclarationLanguage(actualViewId);<br>
&gt;<br>
&gt;     }<br>
&gt;<br>
&gt; Now on myfaces is this:<br>
&gt;<br>
&gt;     @Override<br>
&gt;     public ViewDeclarationLanguage getViewDeclarationLanguage(<br>
&gt;             FacesContext context, String viewId)<br>
&gt;     {<br>
&gt;         // return a suitable ViewDeclarationLanguage implementation for the<br>
&gt; given viewId<br>
&gt;         return _vdlFactory.getViewDeclarationLanguage(viewId);<br>
&gt;     }<br>
&gt;<br>
&gt; The difference is subtle, but very, very important. This method is called<br>
&gt; from many locations, but only once (from RestoreViewPhase) it is passed the<br>
&gt; &quot;raw&quot; viewId. To &quot;derive&quot; the physical viewId it is required to know if<br>
&gt; prefix or suffix mapping is used and if suffix mapping is used, try to check<br>
&gt; if a view &quot;resource&quot; exists or not with different derived ids with the<br>
&gt; extensions configured &quot;.xhtml .jsp&quot;.<br>
&gt;<br>
&gt; javax.faces.view.facelets.ResourceResolver documentation says this:<br>
&gt;<br>
&gt; &quot;... Provide a hook to decorate or override the way that Facelets loads<br>
&gt; template files. A default implementation must be provided that satisfies the<br>
&gt; requirements for loading templates as in Pre-JSF 2.0 Facelets ...&quot;<br>
&gt;<br>
&gt; So, in theory it is possible to override ResourceResolver interface and<br>
&gt; serve resources from a different location. But the algorithm in<br>
&gt; MultiViewHandler.derivePhysicalViewId does not take into account this<br>
&gt; interface, so it try to check if the view &quot;resource&quot; exists on the same<br>
&gt; location and fails.<br>
&gt;<br>
&gt; The solution proposed is add a method on ViewHandler,<br>
&gt; ViewDeclarationLanguageFactory and ViewDeclarationLanguage called:<br>
&gt;<br>
&gt;     public boolean existsViewId(String viewId)<br>
&gt;<br>
&gt; So the VDL can indicate if a viewId exists or not. In this way, on Facelets<br>
&gt; VDL we can check if a viewId exists using the ResourceResolver instance. It<br>
&gt; is curious that ViewDeclarationFactory implementation has some methods that<br>
&gt; indicate if a vdl can handle a viewId or not (it is not the same, but<br>
&gt; similar). I&#39;m not done too much work on this issue, but it could be good to<br>
&gt; take a look at this one. It could be good to open an issue on the spec for<br>
&gt; this one too (if no objections I&#39;ll open an issue for this one, but better<br>
&gt; to ask first).<br>
&gt;<br>
&gt; Suggestions are welcome.<br>
&gt;<br>
&gt; regards,<br>
&gt;<br>
&gt; Leonardo Uribe<br>
&gt;<br>
<br>
<br>
<br>
</div></div>--<br>
<br>
<a href="http://www.irian.at" target="_blank">http://www.irian.at</a><br>
<br>
Your JSF powerhouse -<br>
JSF Consulting, Development and<br>
Courses in English and German<br>
<br>
Professional Support for Apache MyFaces<br>
</blockquote></div><br>