Here are some differences between apex:actionFunction
and @RemoteAction
.
Remote Action Function:
- Remote Action is an Apex annotation used to mark a method as being available for javascript remoting.
- Remote Action can call the apex methods from any apex class.
- Remote Action allows you to call the method from javascript yourself and retrieve the result as a javascript object for manipulation.
- Remote Action methods are static and global, hence don’t have access to your current controller variables and methods.
- Remote Action methods require less bandwidth, and server processing time, because only the data you submit is visible and the view state is not transferred.
- Remote Action methods have to update the DOM manually using explicit JavaScript.
- Remote Action methods can return data directly back to the calling JavaScript, but cannot update the page’s view state.
Action Function:
- Action Function is a Visualforce tag allows you to invoke a controller action from the Visualforce Page asynchronously via AJAX requests.
- Action Function can call the apex methods only from the class linked to the Visualforce page.
- Action Function doesn’t let you get retrieve data but you can
rerender
the page or a specific section of the page to update it with new values from the controller instance. - Action Function methods are instance methods, and so can see the entire page state.
Action Function has to transfer the page view state. - Action Function methods automatically update the Visualforce DOM and can refresh part or all of the page, and can provide a standard interface for showing a loading status through
apex:actionStatus
. - Action Function methods can update the page’s view state, but cannot return data directly back to JavaScript (although you can do this with some extra effort using
oncomplete
).
In general, apex:actionFunction
is easier to use and requires less code, while @RemoteAction
offers more flexibility. Moreover, @RemoteAction
helps in reducing View State size and also provides you near real time transaction.
.