Salesforce VisualForce的输入字段数据绑定问题

Salesforce VisualForce的输入字段数据绑定问题,salesforce,apex-code,visualforce,Salesforce,Apex Code,Visualforce,我在Visualforce页面上看到了奇怪的结果(是的,Salesforce.com很讨厌,我知道)。我的问题是,我试图使用inputField绑定自定义sObject上的数据,但在我的自定义控制器中,它无法识别用户输入数据 以下是页面中的代码片段: <apex:pageBlockSection title="Enter New Fee" rendered="{!isRenderedFees}" > <apex:inputField value="{!workingF

我在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>
我已确保workingFee属性不为空。每当我在输入值后点击“Save Fee”(保存费用)按钮时,它就会重新加载页面,并给我一条消息“Error:必填字段丢失:[Fee_u_uC]”(注意,Fee_u_u_uC这里是一个货币字段——它并不希望这是一个sObject,是吗?)


saveFee()方法中的debug语句显示workingFee的重要字段为null,而我希望它们已经被分配了用户输入的值

将控件绑定到使用简单{get;set;}符号公开的属性时,我遇到了一大堆问题。。。代码的其余部分将看到属性,但由于某些奇怪的原因,您的视图不会(总是)绑定

尝试编写显式get/set方法,如

private workingFee;
public Fee__c getWorkingFee() {
    return workingFee;
}

public void setWorkingFee(Fee__c value) {
    workingFee = value;
}
没有逻辑上的理由说明为什么这会对任何人起到不同的作用

public Fee__c workingFee { get; set; }
但根据我的经验,有时确实


你怎么说它讨厌

Immediate=false/true也咬了我好几次。很好,伊恩

谢谢伊恩,很遗憾,这似乎不是问题所在。我得到了与显式setter和getter完全相同的行为。我还要说,在同一页面/控制器中,使用属性也适用于其他对象!德拉特-我很高兴我说“有时”。。。这是非常偶然的。好吧,那么下一个猜测。。。您什么时候实例化费用对象?我是建造师?在新的get/set方法中插入一条调试语句,看看Fee_;c对象是否为null……另一个好主意,但不,它不是null。我确实在构造函数中实例化了它。调试日志表明正在调用getter,并且费用对象不为null;然而,我看不到有人叫二传手!我在这里遗漏了什么?因此我的下一个想法是,由于您没有验证页面(您在commandButton上设置了immediate=true),可能在调用setter之前调用了saveFee代码?试着将即时标志设置为false(恐怕我已经没有主意了)以获得胜利!你是冠军。有人想知道文档的作者是怎么想的,而忽略了这一点。
public Fee__c workingFee { get; set; }