[ https://issues.apache.org/jira/browse/MYFACES-2753?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12887849#action_12887849 ]
Leonardo Uribe commented on MYFACES-2753: ----------------------------------------- The previous summary really took me months of hard work to understand it fully. Note this part does not have any comments. I think facelets documentation is not very accurate, so the intention here is expose what the code is doing right now. The way how ui:decorate works right not is more like a decorate pattern. Look this example: <ui:decorate template="/templates/template1.xhtml"> <ui:define name="content"> <ui:decorate template="/templates/template2.xhtml"> <!-- ... some code here ---> </ui:decorate> </ui:define> </ui:decorate> The current algorithm makes ui:decorate that renders template2.xhtml has precedence over the one rendering template1.xhtml. But if you change ui:decorate from extendClient to pushClient, the opposite becomes true, the outer one will have precedence over the inner one. Really the proposal of "isolate template context" when ui:include are resolved is just the tip of the iceberg. If there is more errors it should be described in more detail and argumented properly through examples. In the previous case, I don't see for now why if we include the fix the current algorithm could be incorrect. To solve this one we need a test case with all possible combinations of ui tags. Then, based on that information, extract the rules that any algorithm should do to resolve templates correctly and finally add proper fixes to the code. That means a lot of work. > Trivial multi-level templating does not work if ui:include is used > ------------------------------------------------------------------ > > Key: MYFACES-2753 > URL: https://issues.apache.org/jira/browse/MYFACES-2753 > Project: MyFaces Core > Issue Type: Bug > Components: JSR-314 > Affects Versions: 2.0.2-SNAPSHOT > Environment: myfaces core trunk (2.0.2-SNAPSHOT), tomcat 6.0.26 > Reporter: Martin Kočí > Assignee: Jakob Korherr > Attachments: MYFACES-2753-tests.patch, MYFACES-2753.patch, > MYFACES-2753.tar.gz > > > Following example does not produce any output: > OuterClient.xhtml > <ui:decorate > template="/templates/OuterTemplate.xhtml" > xmlns:ui="http://java.sun.com/jsf/facelets"> > <ui:define name="content"> > <ui:include src="InnerClient.xhtml" /> > </ui:define> > </ui:decorate> > OuterTemplate.xhtml: > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > "http://www.w3.org/TR/html4/loose.dtd"> > <html > xmlns="http://www.w3.org/1999/xhtml" > xmlns:ui="http://java.sun.com/jsf/facelets" > xmlns:f="http://java.sun.com/jsf/core" > xmlns:h="http://java.sun.com/jsf/html"> > <f:view> > <h:head> > <title>title</title> > </h:head> > <h:body> > <ui:insert name="content" /> > </h:body> > </f:view> > </html> > InnerClient.xhtml: > <ui:composition > template="/templates/InnerTemplate.xhtml" > xmlns="http://www.w3.org/1999/xhtml" > xmlns:ui="http://java.sun.com/jsf/facelets"> > <ui:define name="content"> > Do you see me? > </ui:define> > </ui:composition> > InnerTemplate.xhtml: > <f:subview > xmlns:ui="http://java.sun.com/jsf/facelets" > xmlns:f="http://java.sun.com/jsf/core"> > <ui:insert name="content" /> > </f:subview> > But if OutterClient.xhtml looks like: > <ui:decorate > template="/templates/OuterTemplate.xhtml" > xmlns:ui="http://java.sun.com/jsf/facelets"> > <ui:define name="content"> > <ui:composition template="/templates/InnerTemplate.xhtml"> > <ui:define name="content"> > Do you see me? > </ui:define> > </ui:composition> > </ui:define> > </ui:decorate> > it outputs "Do you see me?" which is expected result in both cases. I think > first case should work too - or am I missing something? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.