非同期操作のための状況の提供
部分ページ更新などの Ajax 動作は、ページユーザが作業を進める間にバックグラウンドで発生する非同期イベントです。使い勝手をよくするために、デザイナーは、現在進行中のバックグラウンドのアクティビティについてユーザに警告する状況要素を追加することがよくあります。
Visualforce は、<apex:actionStatus> タグを使った状況更新をサポートしています。このタグを使用すると、startText または stopText 属性によって、バックグラウンドのイベントの開始時または終了時にテキストを表示できます。また、さらに上級の開発者であれば、画像やその他のコンポーネントを表示することができます。
この例では、取引先責任者リストのページに、開発段階であることを示す状況テキストを追加します。ユーザが取引先責任者の名前をクリックすると、詳細領域が表示される間、その領域に [要求中...] というテキストが表示されます。
メッセージを実装するには、<apex:actionStatus> を非同期的に更新される <apex:detail> コンポーネントの周りにラップします。2 つのタグの間に、「stop」という名前の <apex:facet> タグを追加します。
facet は、コンポーネントに示されるデータに関するコンテキスト情報を提供する、Visualforce コンポーネント内の 1 つの領域のコンテンツで構成されます。たとえば、<apex:dataTable> はテーブルのヘッダー、フッター、キャプションの facet をサポートしますが、<apex:column> は列のヘッダーまたはフッターの facet のみをサポートします。<apex:facet> コンポーネントを使用すると、Visualforce コンポーネントのデフォルトの facet を独自のコンテンツで上書きできます。facet の開始タグと終了タグ内で使用できるのは 1 つの子のみです。
次の例では、<apex:actionStatus> は、アクションが完了するとすぐに表示されるコンポーネントを含む、「stop」という facet (この例では詳細領域) をサポートします。
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page standardController="Account">
18 <apex:pageBlock title="Hello {!$User.FirstName}!">
19 You are displaying contacts from the {!account.name} account.
20 Click a contact's name to view his or her details.
21 </apex:pageBlock>
22 <apex:pageBlock title="Contacts">
23 <apex:form>
24 <apex:dataTable value="{!account.Contacts}" var="contact" cellPadding="4"
25 border="1">
26 <apex:column>
27 <apex:commandLink rerender="detail">
28 {!contact.Name}
29 <apex:param name="cid" value="{!contact.id}"/>
30 </apex:commandLink>
31 </apex:column>
32 </apex:dataTable>
33 </apex:form>
34 </apex:pageBlock>
35 <apex:outputPanel id="detail">
36 <apex:actionStatus startText="Requesting...">
37 <apex:facet name="stop">
38 <apex:detail subject="{!$CurrentPage.parameters.cid}"
39 relatedList="false" title="false"/>
40 </apex:facet>
41 </apex:actionStatus>
42 </apex:outputPanel>
43</apex:page>このページをアクセスするときに、ID を URL の一部として含めてください。次に例を示します。
1https://Salesforce_instance/apex/ajaxAsyncStatus?id=001x000xxx3Jsxb