# 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

```apex
<!-- 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

```apex
<!-- 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:

```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 |
