我在 Visualforce 页面上得到了奇怪的结果(是的,Salesforce.com 很恶心,我知道)。我的问题是我正在尝试使用 inputField 在自定义 sObject 上绑定数据,但在我的自定义控制器中,它无法识别用户输入数据。
以下是该页面的代码片段:
<apex:pageBlockSection title="Enter New Fee" rendered="{!isRenderedFees}" >
<apex:inputField value="{!workingFee.Fee_Type__c}" required="True"/>
<apex:inputField value="{!workingFee.Fee__c}" required="True"/>
<apex:pageBlockSectionItem >
<apex:CommandButton value="Save Fee" action="{!saveFee}" immediate="true" />
<apex:CommandButton value="Cancel" action="{!cancelFee}" immediate="true" />
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
这是控制器的代码:
public Fee__c workingFee {get; set;}
....
public PageReference saveFee(){
this.workingFee.Trade_Group__c = tradeGroup.id;
try{
System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
upsert workingFee;
}catch (System.Dmlexception e){
ApexPages.addMessages(e);
return null;
}
System.debug('~~~~#~~#~~workingFee: '+workingFee.Fee_Type__c +'='+workingFee.Fee__c);
//savedFees.add(workingFee.clone());
//re-render the page
this.isRenderedFees = False;
return null;
}
我已确保 workingFee 属性不为空。每当我在输入值后点击“保存费用”按钮时,它都会重新加载页面并给我消息“错误:缺少必填字段:[Fee__c]”(注意,这里的 Fee__c 是一个货币字段——不是它期望这是一个 sObject,是吗?)
saveFee() 方法中的调试语句显示workingFee 的重要字段为空,而我希望它们已被分配用户输入的值。