The <apex:actionFunction>
component allows you to call Apex controller methods from JavaScript, enabling powerful and dynamic interactions in Visualforce pages. It works like a bridge between client-side scripts and server-side logic.
Key Features
- Defines a JavaScript function you can call from anywhere in your page.
- Invokes Apex methods asynchronously using AJAX.
- Can update specific areas of the page using
rerender
.
Syntax
xmlCopyEdit<apex:actionFunction name="callServerMethod" action="{!doSomething}" rerender="outputPanel"/>
You can now call callServerMethod()
using JavaScript.
Example: Call Apex Method on Button Click
xmlCopyEdit<apex:page controller="ActionFunctionController">
<apex:form>
<apex:inputText value="{!inputText}" id="inputBox"/>
<apex:commandButton value="Submit via JS" onclick="callFromJS(); return false;" />
<apex:outputPanel id="outputPanel">
<p>{!responseText}</p>
</apex:outputPanel>
<apex:actionFunction name="callFromJS" action="{!processText}" rerender="outputPanel"/>
</apex:form>
</apex:page>
Apex Controller:
apexCopyEditpublic class ActionFunctionController {
public String inputText { get; set; }
public String responseText { get; set; }
public void processText() {
responseText = 'You typed: ' + inputText;
}
}
When to Use
- When you need to call server-side logic from client-side code.
- If you’re building custom UI interactions using JavaScript.
- For AJAX calls that require real-time updates.
Tips
- Name your function clearly and avoid conflicts with existing JavaScript functions.
- Always use
rerender
to control which components get updated. - Use
immediate="true"
if you want to skip validation.