【Salesforce】ラジオボタンや選択リスト、チェックボックスにデフォルト値を設定する
Visualforceで作成された画面について、修正を依頼されました。
他の方が作成したページだったのですが、ラジオボタンや選択リストに初期値が設定されていませんでした。
そのままでも使えるのですが、何となく修正漏れっぽく見えたので初期値を設定しました。
たまに方法を知らない人がいるようなので、一応メモです。
初期値を表示するだけのページを作成しました。
/**
* 初期値表示用画面のコントローラ
*/
public with sharing class DefaultValueController {
// 文字列のリスト
private static List<String> strList = new List<String>{'1', '2', '3', '4', '5', '6', '7', '8', '9', '10'};
// 選択リスト
public String selectedString{get;set;}
// 複数選択リスト
public List<String> multiSelectedList{get;set;}
// チェックボックス
public Boolean selectedCheck{get;set;}
// 複数のチェックボックス
public List<String> selectedCheckList{get;set;}
// ラジオボタン
public String selectedRadio{get;set;}
/**
* コンストラクタ
* 変数の初期化を行う
*/
public DefaultValueController(){
this.selectedString = '';
this.multiSelectedList = new List<String>();
this.selectedCheck = false;
this.selectedCheckList = new List<String>();
this.selectedRadio = '';
}
/**
* 初期処理
* 初期値の設定を行う
*/
public PageReference init(){
// 選択リスト
this.selectedString = '3';
// 複数選択リスト
this.multiSelectedList.add('1');
this.multiSelectedList.add('3');
this.multiSelectedList.add('5');
this.multiSelectedList.add('7');
this.multiSelectedList.add('9');
// チェックボックス
this.selectedCheck = true;
// 複数チェックボックス
this.selectedCheckList.add('2');
this.selectedCheckList.add('4');
this.selectedCheckList.add('6');
this.selectedCheckList.add('8');
this.selectedCheckList.add('10');
// ラジオボタン
this.selectedRadio = '5';
return null;
}
// -------------------------------------------------- get set -------------------------------------------------- //
/** 選択リスト値 */
public List<SelectOption> getOptionList(){
List<SelectOption> optionList;
// 選択リスト値を作成する
optionList = new List<SelectOption>();
for(String str : strList){
SelectOption option;
// 選択リスト値を作成する
option = new SelectOption(str, str.leftPad(3, '0'));
// リストに追加する
optionList.add(option);
}
return optionList;
}
/** 文字列のリスト */
public List<String> getStrList(){
return strList;
}
}
こちらはVisualforceページです。
<apex:page id="Page" controller="DefaultValueController" action="{!init}" >
<apex:form id="Form" >
<apex:pageBlock >
<apex:pageBlockSection columns="2">
<!-- 選択リスト -->
<apex:pageBlockSectionItem >
<apex:outputLabel for="SelectList" value="選択リスト" />
<apex:selectList id="SelectList" size="1" value="{!selectedString}" >
<apex:selectOptions value="{!OptionList}" />
</apex:selectList>
</apex:pageBlockSectionItem>
<!-- 選択リスト -->
<!-- 複数選択リスト -->
<apex:pageBlockSectionItem >
<apex:outputLabel for="MultiSelectList" value="複数選択リスト" />
<apex:selectList id="MultiSelectList" size="10" multiselect="true" value="{!multiSelectedList}" >
<apex:selectOptions value="{!OptionList}" />
</apex:selectList>
</apex:pageBlockSectionItem>
<!-- 複数選択リスト -->
<!-- チェックボックス -->
<apex:pageBlockSectionItem >
<apex:outputLabel for="CheckBox" value="チェックボックス" />
<apex:inputCheckBox id="CheckBox" value="{!selectedCheck}" />
</apex:pageBlockSectionItem>
<!-- チェックボックス -->
<!-- 複数チェックボックス -->
<apex:pageBlockSectionItem >
<apex:outputLabel for="CheckList" value="チェックリスト" />
<apex:selectCheckboxes value="{!selectedCheckList}" layout="pageDirection" >
<apex:selectOptions value="{!OptionList}" />
</apex:selectCheckboxes>
</apex:pageBlockSectionItem>
<!-- 複数チェックボックス -->
<!-- ラジオボタン -->
<apex:pageBlockSectionItem >
<apex:outputLabel for="SelectList" value="ラジオボタン" />
<apex:selectRadio id="SelectList" value="{!selectedRadio}" layout="pageDirection" >
<apex:selectOptions value="{!OptionList}" />
</apex:selectRadio>
</apex:pageBlockSectionItem>
<!-- ラジオボタン -->
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
こんな画面が表示されます。
設定後の値を先に入れておくだけですね。
とっても簡単です。
複数選択リストはgetsetメソッドで文字列を加工することの方が多いですかね。
別の機会に書いておきます。

No comments.