博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Visualforce page中用自带的控件实现Ajax回调后台方法(并且可以用js去动态给parameters赋值)...
阅读量:4330 次
发布时间:2019-06-06

本文共 3286 字,大约阅读时间需要 10 分钟。

这里用的组合是:apex:commandLink  + apex:actionFunction + apex:outputPanel 

这里的 apex:commandLink 和 apex:actionFunction 都可以通过 action 来指定Ajax所回调的后台方法,

方案一:

其中 apex:commandLink 充当直接回调后台方法的控件,  用 oncomplete 指定执行完后台方法之后所调用的 actionFunction 

其中 apex:actionFunction 的 name 标识actionFunction的名字,实质上是一个JavaScript方法,其他地方可以直接进行调用,这里用apex:commandLink的oncomplete方法调用, rerender 指定所要刷新的 apex:outputPanel, oncomplete 指定刷新完outputPanel之后所调用的JavaScript方法

 

1):后台class的变量和类定义

public List
personSalesTop10_MTD { get; set; }public class SalesPersonSales implements Comparable{ public string OwnerName {get;set;} public string OwnerId {get;set;} public decimal TotalSales {get;set;} public decimal TotalGP {get;set;} public SalesPersonSales(string name, string id, decimal sales, decimal gp){ OwnerName = name; OwnerId = id; TotalSales = sales; TotalGP = gp; } public Integer compareTo(Object objToCompare){ return (((SalesPersonSales)objToCompare).TotalSales - TotalSales).intValue(); }}

 

2):前台page的控件布局与JavaScript方法

Top 10 Salespeople MTD Sales GP$
{!Item_Obj.OwnerName}
Show All

【 注:如果Ajax回调的方法更新了后台的某个变量,前台JS方法中想要直接用{!myVariable}这种方法是获取不到更新之后的值的,这样的处理方式细想一下还是很合理的。】

【 要想获取更新之后的值的话,要将变量的值存储到更新的outputPanel中的某个控件中,然后通过JS的方法获取更新之后控件的内容就可以了。】

 

3):Ajax回调的后台方法

public pagereference LoadAllSalespeople(){    string topType = ApexPages.currentPage().getParameters().get('topType');     string timeType = ApexPages.currentPage().getParameters().get('timeType');     if(timeType == 'MTD'){        // to do    }    else{        // to do    }    return null;}

 

上面的这种方式有一个很大的弊端,就是不能够动态的给parameter赋值,如果想满足这点请看如下方案

方案二:

其中 apex:commandLink 仅当做一个触发器,通过前台JS方法去调用apex:actionFunction所对应的后台方法,这个JS方法做了一个非常重要的事情就是动态的传递Parameter的值。形式为:actionFunction的名字(param1, param2, ...)

其中 apex:actionFunction 的 name 标识actionFunction的名字,实质上是一个JavaScript方法,其他地方可以直接进行调用,rerender 指定所要刷新的 apex:outputPanel, oncomplete 指定刷新完outputPanel之后所调用的JavaScript方法

那么所对应的Apex Page代码如下所示:

Top 10 Salespeople MTD Sales GP$
{!Item_Obj.OwnerName}
Show All

 

对比方案一和方案二:

方案一的基本代码结构(轻actionFunction,重commandLink)

Show All

 

方案二的基本代码结构(轻commandLink,重actionFunction)

Show All

 

进一步引申:

我们发现可以完全用其他控件来代替commandLink的触发器作用,来调用actionFunction所指定的后台方法,具体的代码结构如下所示:

 

这里附上另一种Ajax回调的方式,请看这个链接: 

 

转载于:https://www.cnblogs.com/mingmingruyuedlut/p/3450753.html

你可能感兴趣的文章
xml解析
查看>>
centos安装vim
查看>>
linux工作调度(计划任务)
查看>>
hdu--1698 Just a Hook(线段树+区间更新+懒惰标记)
查看>>
Python学习笔记-EXCEL操作
查看>>
PAT 甲级 1096 Consecutive Factors
查看>>
拓扑排序
查看>>
rtf格式 C#设置字间距 CharacterSpacing
查看>>
JS Date格式化为yyyy-MM-dd类字符串
查看>>
win10安装.net3.5 报错解决
查看>>
福大软工 · 最终作业 - 软件工程实践总结(个人)
查看>>
SSM整合XML版(Maven Project)
查看>>
时间序列分析六:截面数据和时序数据结合的多变量时序分析
查看>>
oracle配置备份
查看>>
手游后台PVP系统网络同步方案总结
查看>>
luogu1979 华容道 (dijkstra+bfs)
查看>>
ADO.NET基础必备之DataSet
查看>>
Valid Palindrome
查看>>
Python 多线程应用
查看>>
默认函数及运用
查看>>