I have a visualforce page that calls a custom component. Both the VF page and the custom component have apex:pageMessages tags embedded in them. I put a wrapper class around the apex:pageMessages so that I can specify which messages I want displayed via the rerender attribute on a command button.
Here is some pseudo-code to help describe my situation...
VF page
<apex:page controller="ChooseContactController">
//JS-CSS includes
<apex:form >
<apex:pageBlock title="Choose a contact" mode="edit">
<apex:pageBlockButtons >
<input type="button" class="btn show-modal" value="New Contact"/>
<apex:commandButton action="{!save}" value="Save" rerender="chooseContactPageMessagesWrapper"/>
</apex:pageBlockButtons>
<apex:outputPanel id="chooseContactPageMessagesWrapper">
<apex:pageMessages />
</apex:outputPanel>
//Data
</apex:pageBlock>
</apex:form>
<div id="modal-div" title="Create Contact" style="display:none;">
<c:CreateContact theAccountId="{!accountId}" />
</div>
CreateContact Component
<apex:component controller="CreateContactComponent" selfClosing="true" allowDML="true">
<apex:attribute name="theAccountId" description="The account Id the contact belongs to" type="Id" assignTo="{!accountId}" required="true" />
<apex:form >
<apex:pageBlock title="Create a new contact">
<apex:outputPanel id="createContactPageMessagesWrapper">
<apex:pageMessages />
</apex:outputPanel>
<apex:pageBlockButtons >
<apex:commandButton action="{!save}" value="Save" rerender="createContactPageMessagesWrapper"/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:form>
When a user tries to create a new contact within the custom component, I want any error to be displayed in the component's pageMessages and not refresh the page. However, if the save action is successful, I want the entire page to be refreshed.
Is there a way to refresh a page in a command button's action method, or in a javascript method after the action is complete, that has the rerender attribute defined?