How is returning null
different from returning ApexPages.currentPage()
as a result of a controller action?
1 Answer
The major difference is when you return null the constructors defined in the controller class don't execute.
While if you return whole page the page gets refreshed and constructors get executed only if you have made setRedirect flag set to true.Hence we have an option either to flushout the viewstate or not using this approach.Returning ApexPages.currentPage() will provide us ability to choose set redirect as true or false depending on the business need for the page.
If you are using reRender tags for ajax actions then we prefer null as to avoid whole refresh of page .
-
8Returning the current page won't run the constructors unless the setRedirect flag is set to true though. From the docs "If the postback request indicates a page redirect and the redirect is to a page that uses the same controller and a proper subset of controller extensions of the originating page, a postback request is executed for that page." In this case, the same controller would be in use as its the same page. Commented Apr 12, 2013 at 14:20
-
1Thanks i just verified for both scenario using return null and also using return ApexPages.currentPage().You are Perfect!!!Constructors wont run unless we have setredirect set to true .I will include your points too in answer and modify my answer .Using ApexPages.CurrentPage we will have an option to run the constructor everytime .Thanks again for removing the myth i had on this concept Commented Apr 12, 2013 at 19:13
-