SFDC - 将输入传递给URLFOR

时间:2012-10-12 23:27:11

标签: salesforce apex-code url-for

我目前正在尝试在Salesforce上自定义对象,并且需要创建一个操作按钮,该按钮将导致新的帐户编辑页面。

我想通过URLFOR函数传递输入来预填充新帐户页面(见下文);在我的示例中,不解释参数值。

<apex:page>
  <apex:outputLink value="{! URLFOR( $Action.Account.New, null, [acc2='{! Object__c.Name}'] ) }">New Account</apex:outputLink>
</apex:page>

有没有人知道如何通过顶点的URLFOR传递变量输入?

感谢您的帮助。

Crak

2 个答案:

答案 0 :(得分:1)

是的,您正在使用URLFOR功能。

使用

<apex:outputLink value="{! URLFOR( $Action.Account.New, null, [acc2='Acme'] ) }">New Account</apex:outputLink>

我可以使用Acme作为帐户名加载帐户屏幕。

我认为问题在于您获取名称的调用返回null或空白,因此看起来它没有对Name字段应用任何内容。

在您的控制器中,您应该拥有一个属性,可以访问工作记录。得到如下例子的名称。

控制器

Object__c MyCustomObject {get;set;}

<apex:outputLink value="{! URLFOR( $Action.Account.New, null, [acc2=MyCustomObject.Name] ) }">New Account</apex:outputLink>

如果不能正常工作,请尝试更改为[acc2 ='MyCustomObject.Name']等

答案 1 :(得分:0)

要获得更通用的解决方案,您可以使用: $ Action.Account [] 当actionName是字符串变量(来自apexclass或自定义设置)时,可以是: 视图:显示对象的详细信息页面 编辑:在编辑模式下显示对象 删除:删除对象的URL 新建:用于创建对象的新记录的URL 选项卡:对象主页的URL

我们可以通过将对象名称更改为变量来实现更通用的

$操作[对象名] [actionName]

例如: VFP:

<apex:page standardController="Account" extensions="urlForParamCTRL"
           action="{!urlFor($Action[objectName][actionName],account.Id, null, true)}">
</apex:page>

Apex课程:

public class urlForParamCTRL {
    Public String objectName {get;set;}
    Public String actionName {get;set;}
    public urlForParamCTRL(ApexPages.StandardController controller)
    {
        this.objectName = 'Account';
        this.actionName = 'New';
    }
}

参考:https://developer.salesforce.com/docs/atlas.en-us.pages.meta/pages/pages_dynamic_vf_globals_action.htm