Apex:カスタムコントローラを使ってVisualforceページでレコードを複数表示する

1 min read読了の目安(約1600字

概要

デバッグ目的で最小構成のコントローラ+VFページを作成した。
やることが特に明確でないならスタンダードコントローラの利用を推奨します。

使うリソース

  1. Apex:開発
  2. Visualoforceページ:開発
  3. 取引先オブジェクト

ソースコード:Apex

public class ContactsListWithController {
private String sortOrder = 'Name';
public List<Account> getContacts() {
    List<Account> results = Database.query(
        'SELECT Id, Name ' +
        'FROM Account ' +
        'ORDER BY ' + sortOrder + ' ASC ' +
        'LIMIT 10'
    );
    return results;
}

}

ちょろっと解説

private String sortOrder = 'Name';
テキスト型で変数宣言しつつ値を代入

public List<Account> getContacts() {
メソッドを宣言

    List<Account> results = Database.query(
        'SELECT Id, Name ' +
        'FROM Account ' +
        'ORDER BY ' + sortOrder + ' ASC ' +
        'LIMIT 10'
    );

SOQL文を作成

return results;
SOQL結果を返す

ソースコード:Visualforceページ

<apex:page controller="ContactsListWithController">
<apex:form>
    <ul>
    <apex:repeat value="{!Contacts}" var="precord">
      <li>
        <apex:inputField value="{!precord.Name}"/><apex:outputText value="{!precord.Name}"/>
      </li>
      </apex:repeat>

    </ul>
</apex:form>
</apex:page>

ちょろっと解説

<apex:page controller="ContactsListWithController">
Apexで作成したコントローラを指定

<apex:form>/[なにか]/</apex:form>
[なにか]のとこにapex:inputfieldタグを入れると入力ができるようになる

<apex:repeat value="{!Contacts}" var="precord">
Apexコントローラ:ContactsListWithControllerからContactsの値を取得しにいく。
戻り値はgetContactsが返すList型。中にはSOQLで取得したオブジェクトのレコードリストが入る。

※ここがよくわかってないんだけど、なぜgetContactsではなくてContactsなのだろう…🤔
var="precord"はfor文とかで言うとこのiみたいな用途の変数の理解。

<apex:inputField value="{!precord.Name}"
apex:repeatで受け取ったList型データからオブジェクトの項目を取得して入力フォームを表示する。

まとめ

Apex全然わからん。