在 Visualforce 中将复选框和单选按钮与选择选项一起使用

Using both Checkboxes & Radio buttons with SelectOption in Visualforce

我目前在编译时收到错误消息,无法找到 returns 我的 SelectOption 中的选项 criteriaList()。我的印象是单选按钮和复选框使用相同的技术但显然不是?

我尝试使用与单选按钮相同的语法,它们确实可以独立工作。但出于某种原因,复选框出现了问题。

我在 VFP 上的单选按钮是这样的

    <apex:selectRadio value="{!tenlan}" layout="PageDirection" >

        <apex:selectOptions value="{!consumerList}"/>

    </apex:selectRadio>

我的复选框也是如此

    <apex:selectCheckboxes value="{!bbt}" layout="PageDirection">

        <apex:selectOptions value="{!criteriaList}"/>

        </apex:selectCheckboxes>

至于控制器。我这样处理单选按钮:

public List<SelectOption> getconsumerList(){
    List<SelectOption> options = new List<SelectOption>();
    options.add(new SelectOption('Tenant', 'Tenant'));
    options.add(new SelectOption('Landlord', 'Landlord'));
    options.add(new SelectOption('Access', 'Access'));
    return options;
}

当然,我为我的复选框尝试了同样的事情。

public List<SelectOption> getcriteraList(){
    List<SelectOption> options = new List<SelectOption>();
    options.add(new SelectOption('bbt', 'Break Down By Trade'));
    return options;
}

阅读此处的 selectCheckBoxes 后 https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_compref_selectCheckboxes.htm

似乎这些框确实可以使用字符串而不是布尔值作为 options.add()。但我不确定为什么编译器不会将 criteriaList 作为可接受的方法。

我可以通过启动两个单独的 selectOption 列表来避免这个问题。

public List<SelectOption>consumerList{get; set;}
public List<SelectOption>criteriaList{get; set;}

然后在构造函数中我添加了我的标准。

 consumerList = new List<SelectOption>();
 criteriaList = new List<SelectOption>();
 consumerList.add(new SelectOption('Tenant', 'Tenant'));
 consumerList.add(new SelectOption('Landlord', 'Landlord'));
 consumerList.add(new SelectOption('Access', 'Access'));
 criteriaList.add(new SelectOption('bbt', 'BreakDownByTrade'));

我有点难过,因为我不太清楚为什么这是必要的,但它似乎确实解决了问题。