1

我在 SalesForce 中有一个流,它创建一个新的对象记录并填充其字段。vAddendumId然后我在流程中设置了一个变量。我希望能够Id在相应的 VisualForce 页面控制器上引用它,但我遇到了问题。我知道如何通过 URL“get”将变量从我的页面放入流中,但我无法弄清楚相反的方向。

这是我现在在 URL 字符串中分配Opportunity Idfrom的代码:oid

视觉力量页面:

<apex:page Controller="AddendumEntryController" TabStyle="Addendum__c">
    <flow:interview name="Addendum_Entry" finishLocation="{!backToAddendum}" >
        <apex:param name="vOpportunityId" value="{!opptyId}"/>
    </flow:interview>
</apex:page>

控制器:

public with sharing class AddendumEntryController {

    public ID getoppId = System.currentPagereference().getParameters().get('oid');
    public Flow.Interview.Addendum_Entry AddendumEntryFlow{get;set;}

    public String getOpptyId(){ return getoppId; }

    public PageReference getBackToAddendum(){

        PageReference send = new PageReference('/' + getaddendumId);
        send.setRedirect(true);
        return send;

    }

}

我的最终目标是在流程完成后将用户发送到新创建的对象记录。这意味着我需要getaddendumId使用流中的 id 进行填充。

提前感谢您提供的任何帮助!

编辑 - 加法

我又尝试了几件事,其中一件似乎很有希望,但仍然抛出错误。我尝试将变量设置为AddendumEntryFlow.vAddendumId. 这给出了一个关于取消引用空对象的错误。我相信这是因为vAddendumId直到流程的后期才设置,但我不能确定。

public Flow.Interview.Addendum_Entry AddendumEntry{get;set;}
public ID getaddendumId = AddendumEntry.vAddendumId;
4

1 回答 1

4

经过大量的摆弄,我找到了解决方案。我需要interview在页面上设置属性,以便我可以从其内容中提取值。然后我需要做的就是从AddendumEntry.vAddendumId.

最终代码

附录Entry.page

<apex:page Controller="AddendumEntryController" TabStyle="Addendum__c">
    <flow:interview name="Addendum_Entry" interview="{!AddendumEntry}" finishLocation="{!backToAddendum}" >
        <apex:param name="vOpportunityId" value="{!opptyId}"/>
    </flow:interview>
</apex:page>

附录EntryController.cls

public with sharing class AddendumEntryController {

    public ID getoppId = System.currentPagereference().getParameters().get('oid');
    public Flow.Interview.Addendum_Entry AddendumEntry{get;set;}

    public String getOpptyId(){ return getoppId; }
    public ID returnId = getoppId;

    public PageReference getBackToAddendum(){

        if(AddendumEntry != null) returnId = AddendumEntry.vAddendumId;

        PageReference send = new PageReference('/' + returnId);
        send.setRedirect(true);
        return send;

    }

}

事实证明这很简单。我之前的尝试失败的唯一原因是我没有interview="{!AddendumEntry}"在页面上设置。

于 2012-04-05T19:17:15.823 回答