You need to sign in to do that
Don't have an account?
Can't get <apex:pagemessages /> to render a message.
I'm struggling with being able to show a basic success message to the user using the standard <apex:pagemessages /> component. I've got it on the page, but it never shows a message. Here's the page:
<apex:pageblock > <apex:pageblockSection > <h1>Page Messages:</h1> <apex:pageMessages /> </apex:pageblockSection>
Nothing unusual there, right?
Here's the controller method that generates the message. Basically I've got a list with checkboxes, and the user selects some, clicks a button, and then records are inserted based on the selections. When that happens, I'd like to let the user know the insert was successful.
if (billTos.size() > 0) { try{ insert billTos; // set the message for the user ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'Bill-To Sites successfully created')); } catch (DMLException e){ // show the messages to the user ApexPages.addMessages(e); } } else { // set the message for the user ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'No Sites Selected')); }
My records are being successfully inserted, so it should be hitting the success message. But it's all silent on the page -- nary a peep. What the heck am I doing wrong? This seems simple!!
Having the full code makes for easier debugging :smileyvery-happy:
Anyway, I think you're getting close. Try this:
<apex:pageblock id="theBlock" > <apex:pageMessages/> <apex:pageBlockButtons > <apex:commandButton value="Save Selected Bill To Sites" action="{!processSelected}" rerender="theBlock,table"/>
...
All Answers
Try returning null after your else statement:
} else { // set the message for the user ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'No Sites Selected')); } return null;
This should re-render your pagemessages.
Thanks for the suggestion captain. Love that screen name BTW!
Unfortunatley, I already have the return null line in there. Here's the full method:
public PageReference processSelected(){ //We create a new list of Accounts that we be populated only with Accounts // if they are selected List<Account> selectedAccounts = new List<Account>(); //We will cycle through our list of aAccounts and will check to see if the //selected property is set to true, if it is we add the Account to the //selectedAccounts list. for(aAccount aAcc : getAccounts()){ if(aAcc.selected == true){ selectedAccounts.add(aAcc.acc); } } //Now we have our list of selected accounts and can perform any type of //logic we want, sending emails, updating a field on the account, etc //System.debug('These are the selected Contacts...'); List <Bill_To_Sites__c> billTos = new List<Bill_To_Sites__c>(); for(Account acc : selectedAccounts){ Bill_To_Sites__c b = new Bill_To_Sites__c(); b.Account__c = acc.Id; b.Opportunity_Account__c = ApexPages.currentPage().getparameters().get('id'); billTos.add(b); } if (billTos.size() > 0) { try{ insert billTos; // set the message for the user ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'Bill-To Sites successfully created')); } catch (DMLException e){ // show the messages to the user ApexPages.addMessages(e); } } else { // set the message for the user ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'No Sites Selected')); } return null; }
Enth,
I think the page is structured as you suggest. Here's the full page code:
<apex:form > <apex:pageblock > <apex:pageMessages /> <apex:pageBlockButtons > <apex:commandButton value="Save Selected Bill To Sites" action="{!processSelected}" rerender="table"/> </apex:pageBlockButtons> <apex:pageblockSection > <h1>Potential Bill-To Accounts for this Opportunity</h1> </apex:pageblockSection> <apex:pageblockSection showHeader="true" title="Potential Bill-To Accounts" id="list" columns="1"> <apex:pageblocktable value="{!accounts}" var="a" id="table"> <apex:column > <apex:inputCheckbox value="{!a.selected}"/> </apex:column> <apex:column value="{!a.acc.Name}"/> <apex:column value="{!a.acc.Site_Number__c}"/> <apex:column value="{!a.acc.BillingStreet}"/> <apex:column value="{!a.acc.BillingCity}"/> <apex:column value="{!a.acc.BillingState}"/> </apex:pageblocktable> </apex:pageblockSection> </apex:pageblock> </apex:form> </apex:page>
Having the full code makes for easier debugging :smileyvery-happy:
Anyway, I think you're getting close. Try this:
<apex:pageblock id="theBlock" > <apex:pageMessages/> <apex:pageBlockButtons > <apex:commandButton value="Save Selected Bill To Sites" action="{!processSelected}" rerender="theBlock,table"/>
...
http://community.salesforce.com/sforce/board/message?board.id=apex&message.id=27292#M27292
go through the reply by spd.....it is not using page:messages.....but it shows howto display a message without using it...
i hope this helps...