The <apex:dynamicComponent>
tag allows you to create and render components dynamically at runtime using Apex code. This is useful when the component structure or type needs to be decided programmatically.
Why Use <apex:dynamicComponent>
?
- Enables dynamic UI rendering based on logic, user input, or data.
- Useful for reusable components where the structure is not known at design time.
- Allows developers to control layout and behavior dynamically.
Basic Syntax
xmlCopyEdit<apex:page controller="DynamicCompController">
<apex:dynamicComponent componentValue="{!myComponent}"/>
</apex:page>
Apex Controller Example
apexCopyEditpublic class DynamicCompController {
public Component.Apex.OutputText myComponent { get; set; }
public DynamicCompController() {
myComponent = new Component.Apex.OutputText();
myComponent.value = 'This is a dynamically generated text!';
}
}
Use Cases
- Conditional UI Rendering: Display different layouts or components based on user role or input.
- Reusable Page Templates: Build pages that adapt structure based on object type.
- Form Builders or Configurable UIs: Let users design what they want to see.
Important Notes
- Components must be created using Apex’s
Component
classes (likeComponent.Apex.OutputText
). - The
componentValue
attribute should point to an Apex property that returns aComponent.Apex
object.