我有一个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]”(注意,Fee__c这里是一个货币域 - 它不是,它预计这是一个的sObject,是吗?)

在saveFee()方法调试声明显示,workingFee的重要领域是空的,我希望他们已经由用户指定的值的输入。

有帮助吗?

解决方案

我有问题的结合控制,以用简单的{暴露的性质的整个堆得到;组; }符号......你的代码的其余部分将看到的属性,但对于一些奇怪的原因,你的视图不会(总是)绑定...

试着写明确的get / set方法,如

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

public void setWorkingFee(Fee__c value) {
    workingFee = value;
}

没有逻辑上的理由为什么这应该工作的任何不同的至

public Fee__c workingFee { get; set; }

但在我的经验,有时做...

你是怎么说的它是甜的? ;)

其他提示

立即=假/真咬了我好几次了。良好的抓伊恩。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top