Мой пользовательский контроллер:

  public class getObjectOptions {
 Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
List<SelectOption> options{get;set;}
  /**public getObjectOptions()
   {

    }**/
public List<SelectOption> getObjectItems(){
 List<SelectOption> options = new List<SelectOption>();
Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
for(Schema.SObjectType thisObj : gd.values()) {
 //list<SelectOption> name = thisObj.getDescribe().getName();
 options.add(new System.SelectOption(String.valueOf(thisObj), 
String.valueOf(thisObj)));       
 }
 system.debug('options****' + options);
 return options;
 }    }                                             

Моя страница VisualForce:

<apex:page controller="getObjectOptions">
<apex:form >
  <apex:pageBlock >
   <apex:outputlabel value="Object Name"/>      
    <apex:selectList id="option" value="{!ObjectItems}">
 <!-- <apex:selectOptions value="{!options}"/>-->
 </apex:selectList>
</apex:pageBlock>
0
SFDCLearner 3 Апр 2020 в 12:31
Напишите так: в апексе: public List options {get;set;}
 – 
SFDCLearner
3 Апр 2020 в 12:33

2 ответа

Вы связываете неправильное свойство. Ваш закомментированный <apex:selectOptions> находится там, где принадлежит ваша привязка ObjectItems: привязка value этого компонента должна быть подключена к List<SelectOption>.

   <apex:outputlabel value="Object Name"/>      
    <apex:selectList id="option" value="{!ObjectItems}">
 <!-- <apex:selectOptions value="{!options}"/>-->

Вам также не нужно

List<SelectOption> options{get;set;}

Что вам нужно, так это переменная экземпляра контроллера для хранения выбранного элемента. Это должно быть типа String или String[], в зависимости от того, хотите ли вы, чтобы ваш список выбора был множественным выбором, и это то, что вы привязываете к value от <apex:selectList> до.

Вот почему он должен быть доступен для чтения и записи: он содержит значения, выбранные пользователем.

Пример есть в документации для <apex:selectList>, показывающего, как создавать эти привязки.

1
David Reed 3 Апр 2020 в 16:12

Пожалуйста, проверьте этот код: для объяснения примера взятого объекта учетной записи есть пример и тип (раскрывающийся список)

<apex:page controller="getObjectOptions">
<apex:form >
    <apex:pageBlock >
        <apex:outputlabel value="Object Name"/>  
        <apex:selectList size="1" >
            <apex:selectOptions value="{!ObjectItems}"/>
        </apex:selectList>    
    </apex:pageBlock>
</apex:form>

Класс Apex:

public class getObjectOptions {
public List<SelectOption> getObjectItems(){
    List<SelectOption> options = new List<SelectOption>();
    options.add(new SelectOption('None','--None--'));
    Schema.DescribeFieldResult fieldResult = Account.Type.getDescribe();
    List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
    for(Schema.PicklistEntry p : ple)
        options.add(new SelectOption(p.getValue(), p.getValue())); 
    return options;
}   }                          
-2
SFDCLearner 3 Апр 2020 в 12:53