単一ページでのクエリ文字列パラメータの取得と設定
前述のクエリ文字列パラメータの取得と設定の例に続き、この例では、単一ページ上で 2 つのアクションを組み合わせてより興味深い結果を作成する方法を示します。「クエリ文字列パラメータの取得」の例に基づいて、次のページではリストに含まれる各取引先責任者の名前をハイパーリンクにし、その下に表示される詳細コンポーネントのコンテキストを制御します。
これは、次の操作により実行できます。
- データテーブルを <apex:form> タグでラップする
- 各取引先責任者名を、<apex:param> タグで適切な cid パラメータを設定する <apex:commandLink> に変換する
標準コントローラと一緒に使用されると、コマンドリンクは常に現在のページをページに新しく追加された情報で完全に更新します。この場合は、更新された cid が取引先責任者詳細コンポーネントを更新します。
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:facet name="header">Name</apex:facet>
28 <apex:commandLink>
29 {!contact.Name}
30 <apex:param name="cid" value="{!contact.id}"/>
31 </apex:commandLink>
32 </apex:column>
33 <apex:column>
34 <apex:facet name="header">Phone</apex:facet>
35 {!contact.Phone}
36 </apex:column>
37 </apex:dataTable>
38 </apex:form>
39 </apex:pageBlock>
40 <apex:detail subject="{!$CurrentPage.parameters.cid}" relatedList="false" title="false"/>
41</apex:page>このマークアップを保存した後、ブラウザを id クエリ文字列パラメータで更新します。ただし、次のように URL に cid パラメータは指定しません。
最初は、取引先責任者詳細ページは表示されませんが、取引先責任者名をクリックすると、ページに該当する詳細ビューが表示されます。
1https://Salesforce_instance/apex/MyFirstPage?id=001D000000IRt53