apex:actionFunction
AJAX 要求を使用したコントローラの action メソッドを JavaScript コードから直接呼び出すことをサポートするコンポーネントです。<apex:actionFunction> コンポーネントは <apex:form> コンポーネントの子である必要があります。
コントローラの action メソッドの他の Visualforce コンポーネントからの呼び出しのみをサポートする <apex:actionSupport> とは異なり、<apex:actionFunction> では JavaScript コードのブロック内からコールできる新しい JavaScript 関数を定義します。
注意: API バージョン 23 以降、<apex:pageBlockTable>、<apex:repeat> などの反復コンポーネント内に <apex:actionFunction> を配置できなくなりました。<apex:actionFunction> は反復コンポーネントの後に配置し、反復内には、それをコールする通常の JavaScript 関数を置きます。
例
1<!-- Page: -->
2<apex:page controller="exampleCon">
3 <apex:form>
4 <!-- Define the JavaScript function sayHello-->
5 <apex:actionFunction name="sayHello" action="{!sayHello}" rerender="out" status="myStatus"/>
6 </apex:form>
7
8 <apex:outputPanel id="out">
9 <apex:outputText value="Hello "/>
10 <apex:actionStatus startText="requesting..." id="myStatus">
11 <apex:facet name="stop">{!username}</apex:facet>
12 </apex:actionStatus>
13 </apex:outputPanel>
14
15 <!-- Call the sayHello JavaScript function using a script element-->
16 <script>window.setTimeout(sayHello,2000)</script>
17
18 <p><apex:outputText value="Clicked? {!state}" id="showstate" /></p>
19
20 <!-- Add the onclick event listener to a panel. When clicked, the panel triggers
21 the methodOneInJavascript actionFunction with a param -->
22 <apex:outputPanel onclick="methodOneInJavascript('Yes!')" styleClass="btn">
23 Click Me
24 </apex:outputPanel>
25 <apex:form>
26
27 <apex:actionFunction action="{!methodOne}" name="methodOneInJavascript" rerender="showstate">
28 <apex:param name="firstParam" assignTo="{!state}" value="" />
29 </apex:actionFunction>
30 </apex:form>
31</apex:page>
32
33/*** Controller ***/
34public class exampleCon {
35 String uname;
36
37 public String getUsername() {
38 return uname;
39 }
40
41 public PageReference sayHello() {
42 uname = UserInfo.getName();
43 return null;
44 }
45
46 public void setState(String n) {
47 state = n;
48 }
49
50 public String getState() {
51 return state;
52 }
53
54 public PageReference methodOne() {
55 return null;
56 }
57
58 private String state = 'no';
59}属性
| 属性名 | 属性型 | 説明 | 必須項目 | API バージョン | 通用範囲 |
|---|---|---|---|---|---|
| action | ApexPages.Action | ページマークアップの他の場所で DOM イベントによって actionFunction がコールされるときに呼び出される action メソッド。このメソッドを参照するには、差し込み項目の構文を使用します。たとえば、action="{!save}" ではコントローラの save メソッドを参照します。アクションが指定されていない場合、ページは単に更新されます。 | 12.0 | グローバル | |
| focus | String | AJAX 要求の完了後にフォーカスされるコンポーネントの ID。 | 12.0 | グローバル | |
| id | String | ページの他のコンポーネントが actionFunction コンポーネントを参照できるようにする識別子。 | 12.0 | グローバル | |
| immediate | Boolean | ページの項目に関連付けられている入力規則を処理することなく、このコンポーネントに関連付けられているアクションをすぐに実行するかどうかを指定する boolean 値。true に設定すると、アクションがすぐに実行され、入力規則はスキップされます。指定されていない場合、この値はデフォルトの false に設定されます。 | 12.0 | グローバル | |
| name | String | ページマークアップの他の場所で呼び出された場合の JavaScript 関数の名前。action 属性で指定されているメソッドを実行します。action メソッドが完了すると、reRender 属性で指定されるコンポーネントが更新されます。 | はい | 12.0 | グローバル |
| namespace | String | 生成された JavaScript 関数のために使用される名前空間。namespace 属性は、単純な string 型で、文字で始まり、文字、数値、またはアンダースコア (_) 文字のみで構成される必要があります。たとえば、「MyOrg」および「Your_App_Name_v2」は、名前空間としてサポートされます。この属性が設定されていない場合、名前空間は <apex:actionFunction> によって生成された JavaScript 関数に追加されず、既存の動作のままになります。 | 12.0 | グローバル | |
| onbeforedomupdate | String | onbeforedomupdate イベントの発生時 (AJAX 要求が処理されたとき、ただし、ブラウザの DOM が更新される前) に呼び出される JavaScript。 | 12.0 | グローバル | |
| oncomplete | String | AJAX 更新要求の結果がクライアントで完了したときに呼び出される JavaScript。 | 12.0 | グローバル | |
| rendered | Boolean | コンポーネントをページに表示するかどうかを指定する boolean 値。指定されていない場合、この値はデフォルトの true に設定されます。 | 12.0 | グローバル | |
| reRender | Object | action メソッドの結果がクライアントに返されるときに再作成される 1 つ以上のコンポーネントの ID。この値には、単一の ID、ID のカンマ区切りのリスト、または ID のリストまたはコレクションの差し込み項目の式を使用できます。 | 12.0 | グローバル | |
| status | String | AJAX 更新要求の状況を表示する関連付けられているコンポーネントの ID。「actionStatus コンポーネント」を参照してください。 | 12.0 | グローバル | |
| timeout | Integer | AJAX 更新要求がタイムアウトするまでの時間 (ミリ秒)。 | 12.0 | グローバル |