You need to sign in to do that
Don't have an account?
Shweta Rai
Validatino Error Message on VF Page
Hi,
I want to dislay the Validation error message on the VF Page code. How do i o that?
validation rule:
Case.ownerID=RecordApproverMapping.ID
Error Message: Not Allowed
And this VF page
<apex:page standardController="Case" extensions="CaseSelectController" id="pageId" title="Case Approver">
<apex:form id="formId">
<apex:pageMessages id="pageMessagesId"/>
<apex:inputHidden value="{!Case.LOB__c}"/>
<apex:inputHidden value="{!Case.Sub_LOB_Asset_Class__c}"/>
<apex:pageblock title="Case: {!Case.CaseNumber}" id="pageBlockSearchId">
<apex:pageBlockButtons location="top" id="pageBlockButtonsId">
<apex:commandButton action="{!SearchApprover}" value="Search" id="commandButtonSearchId" reRender="pageMessagesId,outputPanelId"/>
<apex:commandButton action="{!Cancel}" value="Cancel" id="commandButtonCancelId"/>
</apex:pageBlockButtons>
<apex:pageBlockSection >
<apex:pageBlockSectionItem >
<apex:outputLabel value="Search Approver"/>
<apex:inputText value="{!searchNameString}"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageblock>
<apex:outputPanel id="outputPanelId">
<apex:pageBlock title="List pre-filtered by DOA" id="pageBlockRecordId" rendered="{!if(RecordApproverMappingList != null && RecordApproverMappingList.size>0,true,false)}">
<apex:pageblockTable value="{!RecordApproverMappingList}" var="cAML" id="pageblockTableId">
<apex:column headerValue="Record Approver Name">
<apex:commandLink value="{!cAML.Name}" action="{!selectApproverRecord}">
<apex:param name="selectedApproverId" value="{!cAML.Id}" assignTo="{!selectedApproverId}"/>
</apex:commandLink>
</apex:column>
<apex:repeat value="{!FieldSetMemberList}" var="f">
<apex:column value="{!cAML[f.fieldPath]}"/>
</apex:repeat>
</apex:pageblockTable>
<apex:panelGrid columns="4" id="panelGrid">
<apex:commandLink action="{!first}" rendered="{!hasPrevious}" rerender="outputPanelId,panelGrid">First</apex:commandlink>
<apex:commandLink action="{!previous}" rendered="{!hasPrevious}" rerender="outputPanelId,panelGrid">Previous</apex:commandlink>
<apex:commandLink action="{!next}" rendered="{!hasNext}" rerender="outputPanelId,panelGrid">Next</apex:commandlink>
<apex:commandLink action="{!last}" rendered="{!hasNext}" rerender="outputPanelId,panelGrid">Last</apex:commandlink>
</apex:panelGrid>
</apex:pageBlock>
</apex:outputPanel>
</apex:form>
</apex:page>
Please let me know how can I inlcude the error message on VF Page?
thanks,
Shweta
I want to dislay the Validation error message on the VF Page code. How do i o that?
validation rule:
Case.ownerID=RecordApproverMapping.ID
Error Message: Not Allowed
And this VF page
<apex:page standardController="Case" extensions="CaseSelectController" id="pageId" title="Case Approver">
<apex:form id="formId">
<apex:pageMessages id="pageMessagesId"/>
<apex:inputHidden value="{!Case.LOB__c}"/>
<apex:inputHidden value="{!Case.Sub_LOB_Asset_Class__c}"/>
<apex:pageblock title="Case: {!Case.CaseNumber}" id="pageBlockSearchId">
<apex:pageBlockButtons location="top" id="pageBlockButtonsId">
<apex:commandButton action="{!SearchApprover}" value="Search" id="commandButtonSearchId" reRender="pageMessagesId,outputPanelId"/>
<apex:commandButton action="{!Cancel}" value="Cancel" id="commandButtonCancelId"/>
</apex:pageBlockButtons>
<apex:pageBlockSection >
<apex:pageBlockSectionItem >
<apex:outputLabel value="Search Approver"/>
<apex:inputText value="{!searchNameString}"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageblock>
<apex:outputPanel id="outputPanelId">
<apex:pageBlock title="List pre-filtered by DOA" id="pageBlockRecordId" rendered="{!if(RecordApproverMappingList != null && RecordApproverMappingList.size>0,true,false)}">
<apex:pageblockTable value="{!RecordApproverMappingList}" var="cAML" id="pageblockTableId">
<apex:column headerValue="Record Approver Name">
<apex:commandLink value="{!cAML.Name}" action="{!selectApproverRecord}">
<apex:param name="selectedApproverId" value="{!cAML.Id}" assignTo="{!selectedApproverId}"/>
</apex:commandLink>
</apex:column>
<apex:repeat value="{!FieldSetMemberList}" var="f">
<apex:column value="{!cAML[f.fieldPath]}"/>
</apex:repeat>
</apex:pageblockTable>
<apex:panelGrid columns="4" id="panelGrid">
<apex:commandLink action="{!first}" rendered="{!hasPrevious}" rerender="outputPanelId,panelGrid">First</apex:commandlink>
<apex:commandLink action="{!previous}" rendered="{!hasPrevious}" rerender="outputPanelId,panelGrid">Previous</apex:commandlink>
<apex:commandLink action="{!next}" rendered="{!hasNext}" rerender="outputPanelId,panelGrid">Next</apex:commandlink>
<apex:commandLink action="{!last}" rendered="{!hasNext}" rerender="outputPanelId,panelGrid">Last</apex:commandlink>
</apex:panelGrid>
</apex:pageBlock>
</apex:outputPanel>
</apex:form>
</apex:page>
Please let me know how can I inlcude the error message on VF Page?
thanks,
Shweta
Can you please write return; statement after this line:
*Else if(selectedApproverId.User_c== CaseObj.OwnerID) {
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Not Allowed');
ApexPages.addMessage(myMsg);*
All Answers
Please use rerender = "pageMessagesId" on either button or commandlink, on which you want to show the error message. In Apex controller, you can wrap your code in try catch and in catch block You can use apexpages.addMessage() function to display the error message.
Please let me know if this makes sense to you.
Thanks,
Pankaj
I want Case owner should not be equal to Record_Approver_Mapping__c.User__c. Can you please help here?
public class CaseSelectApproverController {
//case object to get data from page
public Case caseObj {get;set;}
//id of Record Approver selected by user
public string selectedApproverId {get;set;}
//string for searching Record Approver based on name
public string searchNameString {get;set;}
//Record approver record based on selectedApproverId
private Record_Approver_Mapping__c selectedApproverRecord;
//set controller instance
public ApexPages.StandardSetController setRecordApproverMappingObj {get;set;}
//map of id, Record_Approver_Mapping__c
private map<Id, Record_Approver_Mapping__c> RecordApproverMappingMap;
//field set list for Record Approver
public List<Schema.FieldSetMember> FieldSetMemberList {get;set;}
//list displayed on the page
public List<Record_Approver_Mapping__c> RecordApproverMappingList
{
get
{
if(setRecordApproverMappingObj != null)
return (List<Record_Approver_Mapping__c>)setRecordApproverMappingObj.getRecords();
else
return new List<Record_Approver_Mapping__c>();
}
set;
}
// indicates whether there are more records after the current page set.
public Boolean hasNext {
get {
return setRecordApproverMappingObj.getHasNext();
}
set;
}
// indicates whether there are more records before the current page set.
public Boolean hasPrevious {
get {
return setRecordApproverMappingObj.getHasPrevious();
}
set;
}
// returns the page number of the current page set
public Integer pageNumber {
get {
return setRecordApproverMappingObj.getPageNumber();
}
set;
}
//constructor
public CaseSelectApproverController(ApexPages.StandardController controller) {
//initialize case object
if(caseObj == null) {
caseObj = new Case();
}
//get data for Case from page
caseObj = (Case)controller.getRecord();
//call search approver to display records
SearchApprover();
}
//method executed by constructor or when user clicks search button
public void SearchApprover() {
//initialize Record_Approver_Mapping__c list
RecordApproverMappingList = new list<Record_Approver_Mapping__c>();
//query string
string queryString = 'Select ';
//initialize fieldSetMemberList
fieldSetMemberList = new List<Schema.FieldSetMember>();
//fields not to be displayed on page but used in assigning values to Case.
set<String> fieldNotOnPage = new set<String>{'ID','NAME','EMAIL__C', 'RM_MAILBOX_COPIED_ON_APPROVAL__C', 'NON_RM_MAILBOX__C'};
//loop through field set
for(Schema.FieldSetMember f : SObjectType.Record_Approver_Mapping__c.FieldSets.Select_Approver_Field_Set.getFields()) {
//add field in query if it doesn't contain in set
if(!fieldNotOnPage.contains(f.getFieldPath().toupperCase())) {
//create query string
queryString += f.getFieldPath() + ', ';
//add field in list to display as column
fieldSetMemberList.add(f);
}
}
//initialize list
list<Record_Approver_Mapping__c> Record_Approver_MappingList = new list<Record_Approver_Mapping__c>();
//query data
Record_Approver_MappingList = Database.Query(queryString);
//assign list of records to set controller
setRecordApproverMappingObj = new ApexPages.StandardSetController(Record_Approver_MappingList);
//check if list is not blank
if(Record_Approver_MappingList != null && Record_Approver_MappingList.size() > 0) {
//add list in map
RecordApproverMappingMap = new map<Id, Record_Approver_Mapping__c>();
RecordApproverMappingMap.putAll(Record_Approver_MappingList);
//set page size to 10 if the Test doesn't contain an integer value
setRecordApproverMappingObj.setPageSize(10);
//set page size based on value in Test
try {
setRecordApproverMappingObj.setPageSize(integer.valueof(Test.Select_Approver_Page_Size));
}
catch(Exception e) {
}
}
else {
//through error on page if no approver record exists.
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, Test.Select_Approver_No_Record_Found);
ApexPages.addMessage(myMsg);
}
}
//method called when user selects approver
public PageReference selectApproverRecord() {
//check selectedApproverId is not null
if(selectedApproverId == null) {
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR, Test.Test_Select_Approver_Error);
ApexPages.addMessage(myMsg);
return null;
}
Else if(selectedApproverId.User_c== CaseObj.OwnerID) {
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Not Allowed');
ApexPages.addMessage(myMsg);
}
//update case record
try {
//get data from RecordApproverMappingMap map for selectedApproverId
selectedApproverRecord = RecordApproverMappingMap.get(selectedApproverId);
//assign values to Case record
caseObj.Record_Approver__c = selectedApproverRecord.Id;
caseObj.Record_Approver_Email__c = selectedApproverRecord.Email__c;
caseObj.Notify_IR__c = selectedApproverRecord.RM_Mailbox_Copied_on_Approval__c;
caseObj.Notify_Non_IR__c = selectedApproverRecord.Non_RM_Mailbox__c;
update caseObj;
}
//in case of exception, throw an error
catch(Exception exc) {
//ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR, Test.Test_Select_Approver_Error +': '+exc);
//ApexPages.addMessage(myMsg);
return null;
}
//for successful transaction, navigate to case record
return new pagereference('/' + caseObj.Id);
}
// returns the first page of records
public void first() {
setRecordApproverMappingObj.first();
}
// returns the last page of records
public void last() {
setRecordApproverMappingObj.last();
}
// returns the previous page of records
public void previous() {
setRecordApproverMappingObj.previous();
}
// returns the next page of records
public void next() {
setRecordApproverMappingObj.next();
}
}
Can you please write return; statement after this line:
*Else if(selectedApproverId.User_c== CaseObj.OwnerID) {
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Not Allowed');
ApexPages.addMessage(myMsg);*
[Error] Error: Compile Error: Initial term of field expression must be a concrete SObject: String at line 193 column 25
Line 193: Else if(selectedApproverId.User_c== CaseObj.OwnerId) {
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Not Allowed');
ApexPages.addMessage(myMsg);
}
I have a object Record_Approver_Mapping__c where i am saving the approver. On case onject we custom utton to slect approver. this table has a field user (lookup to User table)