Skip to main content
Hi All

I created one VR on a custom object called "projects__c" where user is not allowed to enter more than 100% in 5 different percent fields. This works fine on the standard page but when i created a VF page to override the button the error message doesn't pop in the VF page.

I tried using try and catch statements in controller and apex:messages in VF page but no luck. Please find below my code and help me in this :

Controller: (Not entire controller)

public class ProjectsCustomPageCtrl{

  public Projects__c proj {get;set;}

  public ProjectsCustomPageCtrl(ApexPages.StandardController myController){            

            proj = new Projects__c();

      }

      

  public PageReference SaveRec(){  

        if(proj.Name!=null && proj.Name!=''){                         

            insert proj;                  

        }                 

      return new PageReference('/' +proj.id).setRedirect(true);       

    }   

}

VF Page:

<apex:page standardController="Projects__c" extensions="ProjectsCustomPageCtrl" sidebar="false" tabStyle="Projects__c">

<apex:messages/>

 <apex:sectionHeader title="Project Details"/>

   <apex:form >        

      <apex:pageBlock id="blck"> 

            <apex:pageBlockButtons >

                <apex:commandButton value="Save" action="{!SaveRec}"/>

                <apex:commandButton value="Cancel" action="{!DoCancel}" immediate="true"/>

            </apex:pageBlockButtons>

            

            <apex:pageBlockSection title="Project Information" columns="2">

                   <apex:inputField value=" {!proj.name}" required="true"/>

                   <apex:inputField value=" {!proj.Account__c}"/>

                   <apex:inputField value=" {!proj.Job_Number__c}"/>

                   <apex:inputField value=" {!proj.Status__c}">

                      <apex:actionSupport event="onchange" action="{!ChkProb}" rerender="blck"/>

                   </apex:inputField>   

                   <apex:inputField value=" {!proj.Line_Owner__c}"/>

                   <apex:inputField value=" {!proj.Probability__c}"/>

                   <apex:inputField value=" {!proj.Gross_Revenue__c}"/>

                   <apex:inputField value=" {!proj.Project_Type__c}"/>

                   <apex:inputField value=" {!proj.X3rd_Party_Cost__c}"/>

                   <apex:inputField value=" {!proj.Start_Date__c}"/>

                   <apex:outputText ></apex:outputText>

                   <apex:inputField value=" {!proj.Duration_In_months__c}"/>                                      

            </apex:pageBlockSection>

         

            <apex:pageBlockSection title="Work Spread Details" columns="2">                  

                   <apex:inputField value=" {!proj.January__c}"/>

                   <apex:inputField value=" {!proj.February__c}"/>

                   <apex:inputField value=" {!proj.March__c}"/>

                   <apex:inputField value=" {!proj.April__c}"/>

                   <apex:inputField value=" {!proj.May__c}"/>

                   <apex:inputField value=" {!proj.June__c}"/>

                   <apex:inputField value=" {!proj.July__c}"/>

                   <apex:inputField value=" {!proj.August__c}"/>

                   <apex:inputField value=" {!proj.September__c}"/>

                   <apex:inputField value=" {!proj.October__c}"/>

                   <apex:inputField value=" {!proj.November__c}"/>

                   <apex:inputField value=" {!proj.December__c}"/>

            </apex:pageBlockSection>       

     </apex:pageBlock> 

     

  </apex:form> 

</apex:page>

Please help me soon. Thanks in advance..!!
3 Antworten
  1. 5. Sept. 2017, 11:02

    @kaplesh : I have already tried this but no luck.

    @Soundar : I tried the same thing you have written but facing one error i.e When I enter more than 100 in 5 different fields it given me error on the top but when i enter les than 100 value and hit save the page remains on the same edit mode but in the backend it does create record.

    Below is the Save() method :

     

    public PageReference SaveRec(){  

      

            Try{

            if(proj.Name!=null && proj.Name!=''){                                     

                insert proj;                  

            }              

        }     

         catch(Exception ex){

                ApexPages.addmessage(new ApexPages.message(ApexPages.severity.FATAL,'Please enter The Project Name'));

                }

          //return null;                   

          return new PageReference('/' +proj.id).setRedirect(true);         

        }    

       

        public PageReference doCancel(){        

           return new PageReference('/a01/o').setRedirect(true);

       }    

    This is what i am using because i want my page to return to projects ID & should not return null thaty's why commented it. And with this code i get following error :

    Update failed. First exception on row 0 with id a012600000FWE90AAH; first error: FIELD_CUSTOM_VALIDATION_EXCEPTION, Work spread cannot be > 100%: []

    Error is in expression '{!SaveRec}' in component <apex:commandButton> in page projectscustomeditpage: Class.ProjectsCustomEditPageCtrl.SaveRec: line 25, column 1

    Let me know if you can help here..!!
0/9000