Salesforce:如何将apex:inputField的值传递给Custom Extension?

时间:2012-05-11 17:30:48

标签: java salesforce visualforce

我目前正在使用带有自定义扩展程序的顶点表单在salesforce.com上开发一个表单。

表单本身旨在预订具有最大插槽数的游览。提交表单时,我需要检查以确保在表单中选择的日期和时间仍然有可用的插槽(因为在加载表单和提交之间没有预订)。

调用PageReference save()时,我无法让自定义控制器接收提交的表单数据。

假设我有......

<apex:form>
<apex:pageBlock>
    <apex:inputField value="{!customObject__c.Date__c}"/>
    <apex:inputField value="{!customObject__c".Time__c}"/>
    <apex:commandButton value="{!save}"/>
</apex:pageBlock>
</apex:form>

我的客户扩展程序框架

public class myExtension {

    public myExtension(ApexPages.StandardController controller) {

    }

    public PageReference save(){
       return null;
    }

}

如何通过save()访问inputField值,以便对现有数据库对象运行查询?

任何有关如何实现这一目标的例子都会很棒。

1 个答案:

答案 0 :(得分:2)

您的视力标记不正确。您需要使用方法设置action属性,value属性将是保存文本:

<apex:form>
    <apex:pageBlock>
        <apex:inputField value="{!customObject__c.Date__c}"/>
        <apex:inputField value="{!customObject__c".Time__c}"/>
        <apex:commandButton value="Save" action="{!save}"/>
    </apex:pageBlock>
</apex:form>

但假设上面只是一个拼写错误,你需要引用标准控制器传入的对象:

public class myExtension {
    private CustomObject__c customObject;

    public myExtension(ApexPages.StandardController controller) {
        customObject = (CustomObject__c) controller.getRecord();
    }

    public PageReference save(){
        //You can now access the customObject and it will contain the 
        //data input by the user
        customObject.Name = ''; //Access properties on the object

        update customObject;
       return null;
    }
}