Edited at

Apexで様々な型を混ぜたリストを作りたい時は

More than 1 year has passed since last update.

タイトルはまどろっこしい感じなのですが、ラッパークラスの事です。

初学者すぎてラッパークラスという言葉を知らなかった時に情報にたどり着けなかったのでこんなタイトルにしています。

Apexでデータのリストを作りたいと言う時にはLIST<適当な型> という形で作ります。

sObjectの場合はLISTで、商談のリストを作る時は LISTと宣言します。

ある日Visualforceページにおいて、sObject型に別の項目を追加したようなリストを作りたいと思った時に困りました。

sObjectに数字を加えたいだけなのに!これはsObjectではありません。そんな時に使うのはラッパークラスです。


ラッパークラス

public class wrapperClassName {

public String name { get; set; }
public Decimal d1 { get; set; }
public String s1 { get; set; }
public Opportunity o1 { get; set; }
public wrapperClassName(String name,Decimal d1,String s1){
this.name = name;
this.d1 = d1;
this.s1 = s1;
this.o1 = o1;
}
}

これで使う時は普通にnewしてやれば使えます


ApexClass

public List<wrapperClassName> wrapperClassLIST{get;set;}

wrapperClassLIST wlist = new List<wrapperClassName>();

これでVisualforceページ側で読み込みできます。

こんなことでよかったのか!!


Visualforce.page例

<apex:repeat value={!wlist} var="w">

{!w.name}
{!w.o1.Name} <!-- 商談名の取得 -->
</apex:repeat>