この記事は新社会人のSalesforce学習記録とその他 Advent Calendar 2025の14日目の記事です。
visaualforceの学習記録です。主にapex:pageの部分について学習しました。
Visualforceとは何か
Visualforceは
Salesforceは一画面単位のUIを作成するもの、つまりページを作るものです。
HTMLのようにタグを使用してページを作成します。HTMLタグを普通に使用することができるほか、Visualforceタグ(visualforceのタグ)も使用できます。
また、Visualforceの強みとして、PDFの作成もできるようです。
LWCとの違い
時代の流れとして
①Visualfore→②Auraコンポーネント→③LWCの順に画面作る系のものが誕生しているようです。
Visualforceは一番初期から存在しているものです。
lwcでは画面の中の要素を作成→Lightningアプリケーションビルダーで描画という流れでしたが、Visualforceはページそのものを作れるようです。また、Visualforceでlwcを表示させることもできるようです。
書き方
特に意味のないページにはなりますが。
<apex:page >
<p>
Hello world!
</p>
<apex:commandButton />
</apex:page>
従来のHTMLと同じようにタグを使用できることがわかると思います。また、apex:から始まるタグはapexタグと呼ばれておりapexと連携させることができるようなものになっています。今回はapex:commandButtonを使用してボタンを作っています。このタグの中にaction=でアクションを仕込むことができ、Apexと連動させて何かを起こすことができるようになります。
Visualforceの種類 apex:page
突然ですが、Visualforceには4種類のコントローラーが存在するようです。
・標準コントローラー
・標準リストコントローラー
・コントローラー拡張
・カスタムコントローラー
標準コントローラー
通常のVisualforceページを作る場合はこれで十分です。
Apexを指定して使用することはできません。あくまでVisualforce完結型です。
<apex:page standardController="Account">
使用したいオブジェクトをこのように指定して使用することができます。指定できるオブジェクトの数は1つだけです。
標準リストコントローラー
標準コントローラーに加えて、レコードセットを使うことができるようになっているようです。
recordSetVarを使用します。標準リストコントローラーに関連付けて使用するようです。
→標準リストコントローラーは特定のオブジェクトでレコードセットの表示や編集を行えるようです。
<apex:page standardController="Account" recordSetVar="aaa">
recordSetVarにつける名前は何でも構いません。standardControllerで指定したオブジェクトのレコードを大量に扱えるようにし、そのレコードセットに任意の名前を付けているだけです。
コントローラー拡張
これまでは単一のオブジェクトしか扱えなかったのが、コントローラー拡張によって複数のオブジェクトを扱えるようになります。
standardControllerにextensionsを追加することで、複数のApexを使うことができるため、より機能を充実させることができます。
書き方は以下⇩
<apex:page standardController="Account" extensions="addAcc">
standardControllerであるAccount自体はApexに依存しない標準コントローラーの部分になります。extensionを用いることでApexクラスを使用することができます。
カスタムコントローラー
最終奥義級の強さがあります。オブジェクトは単一・複数どちらでも行けるうえ、Apexも使用することができるようです。自由度が高いですが、あまり使われることはないようです。
<apex:page controller="apexName" tabstyle="Account">
ただのコントローラになっているのが特徴です。Apex名を書きましょう。
なくても動きますが、tabstyleにはオブジェクト名を記載するようです。スタイル設定に使用するタブスタイルを指定できます。