从自定义按钮调用apex方法

时间:2012-03-15 05:54:00

标签: salesforce apex-code

我想从自定义Button

调用apex方法

我意识到我们可以实现这两种方式

  1. 调用VF页面,该页面又调用页面属性上的方法
    <apex:page standardController="Opportunity" extensions="oppExt" action="{!changeStatus}"/>

  2. 使用javascript调用webservices方法

  3. 我遇到的问题是针对这种情况的最佳实践。

    由于

3 个答案:

答案 0 :(得分:4)

这取决于您的使用案例。 API支持Controllers and ExtensionsJavaScript RemotingJavaScript with Web Services。这些方法都基于定义的标准;这完全取决于开发人员或开发团队。

JavaScript更适合显示较少数据量的接口,但通常更加用户友好。

我建议AJAX Toolkit超过JavaScript Remoting执行此任务。它更适合单场更新; JavaScript Remoting更适合通过JavaScript访问Apex方法。但是,使用其中任何一个都可以实现相同的结果。

答案 1 :(得分:2)

Prady,你的问题令人费解,但如果我从帖子的标题中正确理解你,你就试图通过自定义按钮的OnClick JavaScript调用Apex。在这种情况下,您对选项的评估几乎已完成。以下是最佳选择顺序:

  1. 使用AJAX工具包的sforce.connection。[update | insert | delete]对您正在处理的记录执行标准DML操作。如果你需要采取的行动不是非常简单(即如果你做的不仅仅是更新某些字段,插入新记录或删除记录),那么你可以在你所讨论的记录上有一个特殊的“触发器”字段可以使用AJAX工具包进行更新,然后这将在后端启动一些Apex触发器代码,这将执行更复杂的逻辑。
  2. 使用AJAX工具包的sforce.apex.execute()方法执行自定义Apex WebService方法。我很想把它放在第3位,因为它需要编写一个基于SOAP的WebService,因此比基于REST的方法稍慢。但是,在Custom Button On-Click JS中使用它更为直接,对于使用标准页面布局的开发人员来说,这是一个经过时间考验的标准做法。此外,如果您将此自定义按钮代码包含在托管包中,这将优于基于REST-API的方法,因为要使用REST API,管理员必须配置与其特定SFDC实例相对应的远程站点 - 而不是但是还是有点麻烦。
  3. 使用JavaScript / AJAX异步调用REST API或自定义Apex REST端点。使用jQuery的$ .get()或$ .ajax()方法对这些端点执行GET / POST。这是有效的,因为REST API将始终与标准页面布局包含自定义按钮的域相同。
  4. 将用户重定向到Visualforce页面,此时您可以使用Page's Controller在Apex中执行任何操作,然后将用户发送回原始页面。最不可取的是因为它需要用户进行双重重定向。

答案 2 :(得分:0)

我不关注你的问题。从控制器调用apex方法就像输入controllerObj.methodName一样简单(假设方法在另一个控制器中),或者只输入methodName,如果方法在同一个控制器中。或者我可能误解了你的问题。你可以添加更多细节吗?