0

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

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

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

有没有人知道如何在 apex 中通过 URLFOR 传递变量输入?

谢谢你的帮助。

克拉克

4

2 回答 2

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'] 等

于 2012-10-14T07:59:25.330 回答
0

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

我们也可以通过将对象名称更改为变量来做到更通用

$Action[objectName][actionName]

例如:VFP:

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

顶点类:

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

于 2017-03-27T16:48:30.590 回答