为什么我无法从控制器上的 visualforce 页面获取值?
Why am i not getting values from visualforce page on my controller?
当我尝试通过单击命令按钮从选项列表中获取选定值和 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 和选择列表选择的值。
- selectedTypeProd 是 null
- 它没有执行方法 SaveValues()
如果我取出所选列表(在 VF 上)所在的代码段和控制器中的 getTypesProduct() 方法,它对 inputText 值工作正常。似乎另一部分正在影响执行。
您可以将 TypesProduct 作为一组字符串。所以它会起作用。
我遇到了同样的问题,通过添加 multiselect="false"
使其正常工作
从
更改您的代码
<apex:selectList value="{!selectedTypeProd}" size="1">
至
<apex:selectList value="{!selectedTypeProd}" size="1" multiselect="false">
当我尝试通过单击命令按钮从选项列表中获取选定值和 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 和选择列表选择的值。
- selectedTypeProd 是 null
- 它没有执行方法 SaveValues()
如果我取出所选列表(在 VF 上)所在的代码段和控制器中的 getTypesProduct() 方法,它对 inputText 值工作正常。似乎另一部分正在影响执行。
您可以将 TypesProduct 作为一组字符串。所以它会起作用。
我遇到了同样的问题,通过添加 multiselect="false"
从
更改您的代码<apex:selectList value="{!selectedTypeProd}" size="1">
至
<apex:selectList value="{!selectedTypeProd}" size="1" multiselect="false">