【Apex+Visualforce】選択リストを自前で作成するサンプル
Visulaforceでは、apex:inputFieldタグを使用すれば自動で項目の型に合ったinputのタイプに変換してくれます。選択リストも然りですが、オブジェクトに項目が無い場合は自前で作成することも可能です。
以下、サンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!-- Visualforceページ --> <apex:page controller="SelectListSampleController"> <apex:form> <apex:pageMessages /> <apex:pageBlock> <apex:pageBlockSection> <apex:selectList value="{!ramen}" size="1" label="ラーメン"> <apex:selectOptions value="{!ramenList}" /> </apex:selectList> </apex:pageBlockSection> <apex:pageBlockButtons location="bottom"> <apex:commandButton value="決定" action="{!kettei}"/> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/** Apex */ public class SelectListSampleController { // ラーメン public String ramen{get; set;} // ラーメンリスト public List<SelectOption> getRamenList() { List<SelectOption> l = new List<SelectOption>(); l.add(new SelectOption('1', '醤油')); l.add(new SelectOption('2', '塩')); l.add(new SelectOption('3', '味噌')); return l; } // コンストラクタ public SelectListSampleController() { ramen = '2'; } // 決定ボタン押下時処理 public void kettei() { String msg = 'あなたが選んだラーメンは"' + ramen + '"です'; ApexPages.addMessage(new ApexPages.message(ApexPages.Severity.INFO, msg)); } } |
ポイント①
選択リストは、選択値(ramen)と選択リスト値(ramenList)で構成されます。
ポイント②
選択リスト値はSelectOptionクラスのListです。SelectOptionクラスのインスタンスは
new SelectOption(value, label)
で生成します。labelは画面に表示される値で、valueは内部的に扱われる値になります。
SelectOption クラス
ポイント③
選択リストの初期値はコンストラクタで指定できます。
ちなみに決定ボタンを押すとこのような動作になります。
