Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

カスタムボタンまたはリンクから Apex クラスメソッドを呼び出す

公開日: Oct 13, 2022
説明

※この記事は英語版を翻訳しており、一部に機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

オブジェクト詳細ページのカスタムボタンまたはリンクから Apex クラスを呼び出すには、Visualforce ページを作成し、アクション属性経由で Apex クラスメソッドを呼び出して動作させます。それを行う方法を示すいくつかのサンプルコードを次に示します。

サーバからこのページが要求されたときに呼び出されるアクションメソッド。式言語を使用してアクションメソッドを参照します。たとえば、action="{!doAction}" は、コントローラ内の doAction() メソッドを参照します。アクションが指定されていない場合は、ページが通常どおりに読み込まれます。アクションメソッドが null を返した場合は、ページが単純に更新されます。このメソッドはページが表示される前に呼び出されるため、オプションで、ユーザを別のページにリダイレクトできます。
重要: このアクションを初期化または DML に使用すべきではありません。

解決策

Visualforce ページ

<apex:page standardController="Case" extensions="EscalCase" action="{!caseEscalation}">
<apex:form>
<apex:inputHidden value="{!case.OwnerId}"/>
</apex:form>
</apex:page>

上記の Visualforce ページでは、ケースオブジェクトの標準コントローラを使用し、その機能を拡張します。これにより、ケースレコードの詳細を取得できるようになります。この ID は、デフォルトで Apex クラスからアクセスできできます。示されているように、Apex クラスから非表示項目としてアクセスできるようにする他のすべての値を含める必要があります。<apex:page> 上のアクション属性が apex クラスメソッドを呼び出し、処理を完了します。


Apex クラス

public class EscalCase {
    //Apex properties or variables

    public Id owner {get; set;}
    public Id Id { get; set; }
    public Case cas { get; set; }

    //constructor to get the Case record
    public EscalCase(ApexPages.StandardController controller) {
    cas =  (Case) controller.getRecord();
    Id = cas.Id;
    System.debug('The case record: ' + cas);
    owner = cas.OwnerId;
    }

    //Method that can is called from the Visual Force page action attribute
    public PageReference caseEscalation() {
       System.debug('Case Owner: ' + owner);
        System.debug('Case Id: ' + Id);
        //build your code logic here
       PageReference pageRef = new PageReference('/'+Id);
        pageRef.setRedirect(true);
       return pageRef; //Returns to the case page
    }
}
 
ナレッジ記事番号

000385214

 
読み込み中
Salesforce Help | Article