【Salesforce】ラジオボタンや選択リスト、チェックボックスにデフォルト値を設定する

【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>

こんな画面が表示されます。

DefaultValue

設定後の値を先に入れておくだけですね。

とっても簡単です。

複数選択リストはgetsetメソッドで文字列を加工することの方が多いですかね。

別の機会に書いておきます。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です