You need to sign in to do that
Don't have an account?
Dynamic elements not rendering in multi level composition
I have a dynamic visualforce element that I'm attempting to render on a visualforce page that has two levels of <apex:composition> tags. The element renders fine if I just use one composition. it doesn't render if I use two levels. It seems to me like this is a bug in salesforce. Any insight would be helpful. Here's the simplest version of the issue I'm seeing:
I have one controller named SimpleController used by all the pages and it's source is the following:
public class SimpleController { public Component.Apex.OutputText dynamictest {get; set;} public PageReference pageRef {get; set;} public SimpleController(){ this.pageRef = Page.SimpleComposition; this.dynamictest = new Component.Apex.OutputText(); this.dynamictest.value = 'This is the dynamic output text'; } }
It sets up the a page reference to the page that will be the composition included in the first page name MainPage that has the following source:
<apex:page controller="SimpleController"> <apex:composition template="{!pageRef}" /> </apex:page>
All this page does is output the template from pageRef. From the controller you can see that the template is the visualforce page SimpleComposition which has the following source:
<apex:page controller="SimpleController"> <apex:composition template="SimpleTemplate"> <apex:define name="dynTest"> This is a simple composition<br /> <apex:dynamicComponent componentValue="{!dynamictest}" rendered="true"/> </apex:define> </apex:composition> </apex:page>
And this is a compostion of the template named SimpleTemplate and it has the following source:
<apex:page controller="SimpleController"> This is the simple template <br /> <apex:insert name="dynTest" /> </apex:page>
This is the expected result when viewing MainPage:
This is the simple template
This is a simple composition
This is the dynamic output text
This is the actual result :
This is the simple template
This is a simple composition
No errors, no indication that anything went wrong. Just no rendering of the dynamic element. If I go to the SimpleComposition page directly I get the expected result.