1

我收到此错误:

Description Resource    Path    Location    Type
Save error: Unknown property 'OpportunityStandardController.getLines'   AlexHelloWorld.page /SFDC/src/pages line 0  Force.com save problem

VF 页面:

<apex:page standardController="Opportunity" extensions="AlexHelloWorld">
    <apex:form >
        <apex:pageBlock title="Edit account for {!$User.FirstName}">
            <apex:pageMessages />
            <apex:pageBlockButtons >

            </apex:pageBlockButtons>
            <apex:pageBlockSection >
                <apex:outputText value="Test - {!retVal}">
                </apex:outputText>
            </apex:pageBlockSection>
            <apex:pageBlockSection >
                <apex:outputText value="OppId - {!opportunity.id}" />
                <apex:outputText value="UserId - {!$User.Id}" />
            </apex:pageBlockSection>
            <apex:pageBlockSection>
                <apex:repeat value="{!getLines}" var="line" id="theRepeat">
                    <tr>
                        <td valign="top"><apex:outputField value="{!line.Id}" /></td>
                        <td valign="top"><apex:outputField value="{!line.OpportunityId}" /></td>
                        <td valign="top"><apex:outputField value="{!line.PricebookEntryId}" /></td>
                        <td valign="top"><apex:outputField value="{!line.Quantity}" /></td>
                    </tr>
                </apex:repeat>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>

控制器:

public with sharing class AlexHelloWorld {

    public boolean  showFedEx{get;set;}
    public String   mystr{get;set;}
    public Id       opportunityId{get;set;}

    //public Opportunity opportunity{get;set;}
    public Decimal retVal{get;set;}

    //Main controller class
    public AlexHelloWorld(ApexPages.StandardController controller)
    {
        mystr = [SELECT Email from User where Id =:Userinfo.getUserId()].Email;
        showFedEx = true;
        retVal = 5*5;
        System.debug('zzzzz');
    }

    public List<OpportunityLineItem> getLines()
    {       
        List<OpportunityLineItem> oli = [SELECT Id, OpportunityId, PricebookEntryId, Quantity FROM OpportunityLineItem where id =:System.currentPageReference().getParameters().get('id')];

        return oli;     
    }
}
4

1 回答 1

2

简单错误:) 您应该跳过函数名称中的“get/set”。我同意这不是世界上最明确的错误信息。

您的 VF 页面应该调用{!lines},而不是{!getLines}(Visualforce 不区分大小写,Apex 也不区分)。然后它会编译得很好。

...
<apex:repeat value="{!lines}" var="line" id="theRepeat">
...

它是如此基本,我什至不确定在文档中链接到哪里(没有冒犯),也许是http://www.salesforce.com/us/developer/docs/pages/index_Left.htm#StartTopic=Content/pages_quick_start_controller_getter_methods。 htm


一个小问题 - 如果您有 Opportunity标准控制器,您可能希望在构造函数中执行此操作:

Opportunity opp = (Opportunity) controller.getRecord();

事实上,您可以忽略整个控制器端并直接从 Visualforce 显示行项目相关列表(但如果您想对它们进行排序,这对您没有帮助)。

<apex:repeat value="{!Opportunity.OpportunityLineItems}" var="line" id="theRepeat">
    <tr>
        <td valign="top"><apex:outputField value="{!line.Id}" /></td>
        <td valign="top"><apex:outputField value="{!line.OpportunityId}" /></td>
        <td valign="top"><apex:outputField value="{!line.PricebookEntryId}" /></td>
        <td valign="top"><apex:outputField value="{!line.Quantity}" /></td>
    </tr>
</apex:repeat>
于 2012-12-15T00:07:39.767 回答