カスタムボタンを作成し、Visualforceを選択しようとするも、選択可能なVisualforceが表示されない、、、
そんな時に役に立つ記事になります。
目次
コンストラクタが必要だった
カスタムボタンでVisualforceを指定するには、Visualforceから呼び出されるApexでコンストラクタを作成する必要があります。
作成するコンストラクタの引数としては以下の2種類があり、カスタムボタンの「表示の種類」によって使い分けます。
- 詳細ページリンク・ボタンの場合
⇒ ApexPages.StandardController - リストボタンの場合
⇒ ApexPages.StandardSetController
詳細ページリンク・ボタンの場合
作成するカスタムボタンのが「詳細ページリンク」、もしくは「詳細ページボタン」の場合、コンストラクタの引数として「ApexPages.StandardController」を使用します。
<apex:page StandardController="Contact" extensions="DeleteContactController" action="{!execute}">
</apex:page>
public class DeleteContactController {
//コンストラクタ
public DeleteContactController(ApexPages.StandardController controller){
}
public pageReference execute(){
/**
* 処理を記述
*/
return null;
}
}
リストボタンの場合
作成するカスタムボタンのが「リストボタン」の場合、コンストラクタの引数として「ApexPages.StandardSetController」を使用します。
また、StandardSetControllerを使用する場合、Visualforce側に「recordSetVar」を指定する必要があります。
<apex:page StandardController="Contact" extensions="DeleteContactController" action="{!execute}" recordSetVar="contacts">
</apex:page>
public class DeleteContactController {
public DeleteContactController(ApexPages.StandardSetController controller){
}
public pageReference execute(){
/**
* 処理を記述
*/
return null;
}
}
コメント