我在SalesForce中有一个流程,它创建一个新的对象记录并填充其字段。然后我在流程中设置变量vAddendumId
。我希望能够在相应的VisualForce页面控制器上引用Id
,但是我遇到了问题。我知道如何通过URL“get”将变量放入我的页面流中,但我无法找出相反的方向。
以下是我现在在URL字符串中从Opportunity Id
分配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;
}
}
我的结论是在流程完成时将用户发送到新创建的对象记录。这意味着我需要使用流中的id填充getaddendumId
。
提前感谢您提供任何帮助!
我已经尝试了更多的东西,其中一个似乎很有希望,但仍然是一个错误。我尝试将变量设置为AddendumEntryFlow.vAddendumId
。这给出了关于取消引用null对象的错误。我相信这是因为vAddendumId
直到流程的后期才设置,但我无法确定。
public Flow.Interview.Addendum_Entry AddendumEntry{get;set;}
public ID getaddendumId = AddendumEntry.vAddendumId;
答案 0 :(得分:4)
经过大量的摆弄后,我找到了解决方案。我需要在页面上设置interview
属性,以便我可以从其内容中提取值。然后,我需要做的就是从AddendumEntry.vAddendumId
中取出值。
<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>
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}"
。