我在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属性不为null。每当我输入值后点击“保存费”按钮,它就会重新加载页面并给我一条消息“错误:缺少必填字段:[Fee__c]”(注意,这里的费用是一个货币字段 - 不是它期望这是一个sObject,是吗?)
saveFee()方法中的debug语句显示workingFee的重要字段为null,当我希望它们已被赋予用户输入的值时。
答案 0 :(得分:10)
我遇到了一大堆问题,将控件绑定到使用简单{get;组;表示法......其余代码将看到属性,但由于某些奇怪的原因,您的视图将不会(始终)绑定...
尝试编写显式的get / set方法,比如
private workingFee;
public Fee__c getWorkingFee() {
return workingFee;
}
public void setWorkingFee(Fee__c value) {
workingFee = value;
}
没有合理的理由说明为什么这应该与
有所不同public Fee__c workingFee { get; set; }
但根据我的经验,它有时确实......
你怎么说它是icky? ;)
答案 1 :(得分:0)
立即=假/真也咬过我很多次。好抓伊恩。