为什么我没有从控制器上的visualforce页面获得值



当我尝试通过单击命令按钮从picklist和inputText中获取选定值时,它并没有真正将它们传递给我的控制器。

VF:

<apex:page controller="FieldsAndTypesPicklists" >
<apex:form >
    <apex:inputText value="{!newDatasetName}" />
    <apex:outputlabel value="Product type: "/>   
    <apex:selectList value="{!selectedTypeProd}" size="1">
        <apex:selectOptions value="{!TypesProduct}"/>
    </apex:selectList>
    <apex:commandButton value="Add new values" action="{!SaveValues}"  />
</apex:form>
</apex:page>

控制器:

public with sharing class FieldsAndTypesPicklists {
    public String selectedTypeProd {get; set;}
    public String newDatasetName { get; set; }
    public void SaveValues() {
        System.debug('>>> InputText value: '+newDatasetName);
    }
     public Set<SelectOption> getTypesProduct(){
        System.debug('>>> Select Type value: '+selectedTypeProd);
        Set<SelectOption> typesProd = new Set<SelectOption>();
        List<Schema.PicklistEntry> picklistEntryList = OpportunityLineItem.TypeProduct__c.getDescribe().getPicklistValues();
        for(Schema.PicklistEntry plEntry : picklistEntryList){
            String typeProduct = string.ValueOf(plEntry.getValue());
            typesProd.add(new SelectOption(typeProduct, typeProduct));
        }
        return typesProd;
    }  
 }

我已经进行了相应的调试,以查看inputText和picklist所选择的值。

  1. selectedTypeProd是null
  2. 没有执行SaveValues()方法

如果我拿出一段代码,其中是所选列表(在VF上)和控制器中的getTypesProduct()方法,它可以很好地用于inputText值。似乎是另一部分影响了执行。

你可以把TypesProduct作为一组字符串。

我也面临着同样的问题,并通过添加multiselect="false"

使其工作

更改代码
<apex:selectList value="{!selectedTypeProd}" size="1">

<apex:selectList value="{!selectedTypeProd}" size="1" multiselect="false">

最新更新