Salesforce Visualforce
apex:selectRadio
ラジオボタンを表示する。
<apex:selectRadio value="{!lead.Post__c}">
<apex:selectOptions id="Post" value="{!postSelectOptions}" />
</apex:selectRadio>
lead.Post__c (選択リスト)
postSelectOptions (List<SelectOption>)
apex:selectCheckboxes
複数チェックボックス
<apex:selectCheckboxes value="{!lead.Industry__c}">
<apex:selectOptions id="Industry" value="{!industrySelectOptions}" />
</apex:selectCheckboxes>
lead.Industry__c (複数選択リスト)
industrySelectOptions (List<SelectOption>)
apex:selectList, apex:selectOption
選択リスト プルダウン セレクトボックス
<apex:selectList value="{!lead.State}">
<apex:selectOption itemValue="北海道" itemLabel="北海道"/>
<apex:selectOption itemValue="青森県" itemLabel="青森県"/>
<apex:selectOption itemValue="岩手県" itemLabel="岩手県"/>
</apex:selectList>
<apex:selectList multiselect="false" size="1" value="{!lead.State}">
<apex:selectOptions value="{!selectOptions}" />
</apex:selectList>
Controllerの変数で動的にプルダウンを作成する。
<apex:selectList multiselect="false" size="1" value="{!state}">
<apex:selectOptions value="{!selectOptions}" />
</apex:selectList>
String state {get;set;}
List<SelectOption> selectOptions {get;set;}
...
selectOptions = new List<SelectOption>();
selectOptions.add(new SelectOption('hokkaidou', '北海道'));
selectOptions.add(new SelectOption('aomori', '青森'));
selectOptions.add(new SelectOption('iwate', '岩手'));
選択リストの内容でプルダウンを作成する。
List<PicklistEntry> picklist = Contact.LeadSource.getDescribe().getPicklistValues();
for (PicklistEntry p : picklist) {
if (p.isActive()) {
selectOptions.add(new SelectOption(p.getValue(), p.getLabel()));
}
}
apex:stylesheet, apex:includeScript
VisualforceでJavascript/CSS外部ファイルの読み込む。
<apex:stylesheet value="{!URLFOR($Resource.resourcename,'style.css')}"/>
<apex:includeScript value="{!URLFOR($Resource.resourcename,'jquery-1.8.0.min.js')}" />
URLFOR($Resource.resourcename, 'filepath')
静的リソースへのURLパスを表示する。
<script type="text/javascript" src="{!URLFOR($Resource.リソース名,'フォルダ名/jquery.js')}"></script>
変数に取ればキレイになる。
<apex:variable var="resource" value="{!URLFOR($Resource.リソース名,'フォルダ名')}"/>
<link type="text/css" href="{!resource}/style.css">
<script type="text/javascript" src="{!resource}/jquery.js"></script>
CSS内の画像パスには気をつける。
$Page
Visualforceページへアクセスするためのグローバル変数。
<apex:commandButton value="XxxConfrim"
action="{!URLFOR($Page.XxxConfrim)}" />
JSENCODE(string)
Javascript文字列のエスケープを行う。
var escaped = '{!JSENCODE(string)}';
JSINHTMLENCODE(string)
Javascript文字列のエスケープを行う。
JSENCODEの前にHTMLENCODE(string)も行う。
JSENCODE(HTMLENCODE((someValue))
TEXT(primitive)
Visualforceで数値を表示すると 1.0 とか 2.0 で表示されてしまう。
apex:repeat内で整数に丸める。
<apex:variable var="index" value="{!0}" />
<apex:repeat value="{!xxxList}" var="xxx">
<apex:variable var="index" value="{!index+1}" />
{!TEXT(index)}回目の表示
...
</apex:repeat>
Visualforce上でMapを使う
こんな書き方が出来る。
<apex:outputText value="{!valueMap[key]}" />
但し、存在しないキーを指定した場合、問答無用でエラーになる。
nullチェックも出来なさそう。
自作コンポーネント作ったほうがよい。
http://www.salesforce.com/us/developer/docs/pages/index_Left.htm#StartTopic=Content/pages_dynamic_vf_maps_lists.htm?SearchType=Stem
配列のリクエストパラメータを使いたいとき
Controllerで配列の変数を定義する。
あとnullだと変数にマッピング出来ないせいかApex関数まで処理が行かないので初期化する。
public class XXXController {
public String[] values {get;set;}
public XXXController() {
values = new String[]{};
}
}
<apex:form id="xxxForm">
<apex:selectCheckboxes id="Value" value="{!values}" layout="pageDirection">
<apex:selectOptions value="{!valueOptions}" id="ValueOption" />
</apex:selectCheckboxes>
<apex:commandButton action="{!submit}" id="SubmitButton" />
</apex:form>