[salesforce]カスタムボタン、カスタムリンクの内容のソースに、指定したいVisualforceページがでてこない

By |8月 20, 2009|Javascript, salesforce, |


Salesforceのオブジェクトには、カスタムボタンカスタムリンクを作成する機能があります。

ws000005

こんなような画面ですね。

ここで「内容のソース」というところで、このカスタムボタン、カスタムリンクのリンク先を指定することができます。

指定できるのは以下の4つです。

  • URL
    URLを直指定してリンク先を設定できます。http://yahoo.comとかにもできますし、/apex/hogehoge?id=xxxxxxみたいにSalesforce内のURLを指定することもできます。
  • カスタムSコントロール
    開発→Sコントロールで作成したSコントロールページを指定できます。
  • OnClick JavaScript
    クリック時に実行するJavaScriptを指定できます。
  • Visualforceページ
    開発→ページで作成したVisualforceページを指定できます。

ここでよく遭遇する問題として、標題にもある「カスタムボタン、カスタムリンクの内容のソースに、指定したいVisualforceページがでてこない」という問題があります。

たとえば「取引先(Account)」オブジェクトのカスタムボタン、カスタムリンクにVisualforceページ割り当てを行いたい場合、そのVisualforceページのコントローラでそのオブジェクトのスタンダードコントローラを設定していないとドロップダウン項目に指定したいvisualforce ページが出てきません。

[php]
<apex:page controller="hogehogeController" tabStyle="Account">
[/php]

これが指定したいVisualforceページだとしたら

[php]
<apex:page standardController="Account" extensions="hogehogeController" tabStyle="Account">
[/php]

こんな感じに書き換える必要があります。

なお、extentions=”apexクラス名” とするとそのクラスのコンストラクタに

[php]
public hogehogeController(ApexPages.StandardController controller) {
}
[/php]

を入れる必要が出てきます(SF側のアラートをクリックすると自動生成されます)。
これがめんどくさいっていう場合は、内容のソースで「URL」を選択して指定したいVisualforceページのリンクを直指定してやれば設定することもできます。こっちのほうが楽チン。

[php]
/apex/hogehogeController
[/php]

こんなかんじでURLとして記述。