apex:componentBody

This tag allows a custom component author to define a location where a user can insert content into the custom component. This is especially useful for generating custom iteration components. This component is valid only within an <apex:component> tag, and only a single definition per custom component is allowed.

Simple Example

<!-- Page: --> 
<apex:page>
    <apex:outputText value="(page) This is before the custom component"/><br/>
    <c:bodyExample>
        <apex:outputText value="(page) This is between the custom component" /> <br/>
    </c:bodyExample>
    <apex:outputText value="(page) This is after the custom component"/><br/>
</apex:page>

<!-- Component: bodyExample -->
<apex:component>
    <apex:outputText value="First custom component output" /> <br/>
    <apex:componentBody />
    <apex:outputText value="Second custom component output" /><br/>
</apex:component>

Advanced Example

<!-- Page: --> 
<apex:page >
    <c:myaccounts var="a">
        <apex:panelGrid columns="2" border="1">
            <apex:outputText value="{!a.name}"/>
            <apex:panelGroup >
                <apex:panelGrid columns="1">
                    <apex:outputText value="{!a.billingstreet}"/>
                    <apex:panelGroup >
                        <apex:outputText value="{!a.billingCity}, 
                            {!a.billingState} {!a.billingpostalcode}"/>
                    </apex:panelGroup>
                </apex:panelGrid>
            </apex:panelGroup>
        </apex:panelGrid>
    </c:myaccounts>
</apex:page>

<!-- Component: myaccounts-->
<apex:component controller="myAccountsCon">
    <apex:attribute name="var" type="String" description="The variable to represent
                        a single account in the iteration."/>
    <apex:repeat var="componentAccount" value="{!accounts}">
        <apex:componentBody >
            <apex:variable var="{!var}" value="{!componentAccount}"/>     
        </apex:componentBody>
    </apex:repeat>
</apex:component>
            
/*** Controller ***/
public class myAccountsCon {

public List<Account> accounts {
    get {
    accounts = [select name, billingcity, billingstate, billingstreet, billingpostalcode 
    from account where ownerid = :userinfo.getuserid()];

    return accounts;
    }
    set;
    }
}

The example above renders the following HTML:

<table width="100%" cellspacing="0" cellpadding="0" border="0" id="bodyTable" class="outer">
    <!-- Start page content table -->
    <tbody><tr><td id="bodyCell" class="oRight">
        <!-- Start page content -->
        <a name="skiplink"><img width="1" height="1"
                        title="Content Starts Here" class="skiplink" 
                        alt="Content Starts Here" src="/s.gif"/></a><span id="j_id0:j_id1">
        <table border="1">
            <tbody>
                <tr>
                    <td>sForce</td>
                    <td><table>
                        <tbody>
                            <tr>
                                <td>The Land's Mark @ One Market</td>
                            </tr>
                            <tr>
                                <td>San Francisco, CA 94087</td>
                            </tr>
                        </tbody>
                    </table>
                    </td>
                </tr>
            </tbody>
        </table>
            <table border="1">
                <tbody>
                    <tr>
                        <td>University U</td>
                        <td>
            <table>
                <tbody>
                    <tr>
                        <td>888 N Euclid 
                            Hallis Center, Room 501
                            Tucson, AZ 85721
                            United States</td>
                   </tr>
                    <tr>
                        <td>Tucson, AZ </td>
                    </tr>
                </tbody>
            </table>
            </td>
            </tr>
        </tbody>
            </table>
            </span>
    </td>
    </tr>
    </tbody>
</table>

Attributes

Attribute Name Attribute Type Description Required? API Version Access
id String An identifier that allows the component to be referenced by other components in the page. 13.0 global
rendered Boolean A Boolean value that specifies whether the component is rendered on the page. If not specified, this value defaults to true. 13.0 global