Tuesday 14 October 2014

Difference between renderAs, rendered and reRender


1. RenderAs :
it is used with page component with name of any supported content converter. Currently only PDF is the only supported content converter.

example: below code will give output in pdf form


<apex:page standardController="Account" renderAs="pdf">

    <apex:pageBlock title="welcome {!$User.FirstName}, ">
        <apex:pageBlockSection columns="1" title="here is your Account Detail :">
            <apex:outputField value="{!account.Name}"/>
            <apex:outputField value="{!account.AccountNumber}"/>
        </apex:pageBlockSection>
    </apex:pageBlock>
</apex:page>






















2. Rendered :
it use to show or hide visualforce elements. It is bound Boolean value in controller which can be true or false making visualforce component display or hide. If not specified its value defaults to true.

example:

<apex:page controller="renderedController" sidebar="false" showHeader="false"                                                                                                                 action="{!accountDetail}">
    <apex:form >
        <apex:commandButton value="Show Button" action="{!showButtonMethod}"/>        
        <apex:pageBlock title="Hi {!$User.FirstName} {!$User.LastName} " id="pageBlock1"                                                                                                      rendered="{!showButton}">
            
            <apex:pageBlockSection title="Here is Account Details">
                <apex:outputField value="{!account.Name}"/>
                <apex:outputField value="{!account.AccountNumber}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>


public class renderedController {

    public Boolean showButton { get; set; }
    public Account account { get; set; }
    public Id accId { get; set; }
    public renderedController() {
        account = new Account();
        showButton = false;
    }
    
    public void accountDetail() {
        accId = ApexPages.CurrentPage().getParameters().get('id');
        if(accId == null) {
            apexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'Url Malformed'));
        } else {
        account = [Select Id, Name, AccountNumber From Account Where Id =: accId];
        }
        return ;
    }
    
    public void showButtonMethod() {
        if(accId == null) {
            showButton = false;
            apexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'Url Malformed'));
        } else {
            showButton = true;
        }
    }
}



3. Rerender
Rerender is used to refresh one or more component. It contains the single Id of the component or list of IDs separated by comma.

example:

<apex:page controller="reRenderController" sidebar="false" showHeader="false"                                                                                                                        action="{!pageMethod}">
    <apex:form >
        <apex:commandButton value="Display Block" rerender="pageBlock1"                                                                                                                                action="{!accountDetail}"/>
        <apex:pageBlock id="pageBlock1">
        <apex:pageMessages />
            <apex:pageBlockSection >
                <apex:outputField value="{!account.Name}"/>
                <apex:outputField value="{!account.AccountNumber}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>


public with sharing class reRenderController {
    public Account account{ get; set; }
    public String accId { get; set; }
    
    public void pageMethod() {
        account = new Account();
        accId = ApexPages.CurrentPage().getParameters().get('id');
        if(accId == null)
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, 'No AccountId'));
    }
    
    public void accountDetail() {
        try {
            account = [Select Id, Name, AccountNumber From Account Where Id =: accId];
        } catch(Exception e) {
            system.debug(' **** ' + e.getMessage());
            ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, e.getMessage()));
        }
    }

}


No comments:

Post a Comment