• 【转】【Salesfoece】Apex 中 PageReference 的使用


     

    PageReference类的作用

    PageReference类位于Apex的System命名空间下。它可以用来在Apex代码中将页面跳转到指定的位置。在开发的时候,我们也可以向其中添加任意的参数。

    页面跳转的代码示例

    PageReference类可以用于多种情况。代码示例如下:

    将页面跳转到一个外部URL

    PageReference pageRef = new PageReference('http://www.baidu.com');
    

    直接在初始化时提供一个外部网站的URL,则可以直接让页面跳转到外部网站。

    将页面跳转到某个Account详细信息页面

    Account acc = [SELECT Id FROM Account LIMIT 1];
    
    PageReference pageRef = new PageReference('/' + acc.Id);
    

    在上面的代码中,首先得到了某个Account记录,然后在初始化PageReference类的时候,使用“/”和记录ID的方式直接定位到该记录详细信息页面的URL。

    将页面跳转到Account对象的新建页面

    Schema.DescribeSObjectResult result = Account.SObjectType.getDescribe();
    
    PageReference pageRef = new PageReference('/' + result.getKeyPrefix() + '/e');
    

    在上面的代码中,首先使用了“Schema.DescribeSObjectResult”来得到Account对象的描述。在定义PageReference时,“getKeyPrefix()”函数和“/e”的组合默认表示新建页面的URL。

    把代码中的Account换成其他的标准或自定义对象就可以跳转到相应的新建页面。

    将页面跳转到某个Account记录的编辑页面

    Account acc = [SELECT Id FROM Account LIMIT 1];
    
    PageReference pageRef = new PageReference('/' + acc.Id + '/e');
    

    在上面的代码中,在URL中添加了记录的ID和“/e”。它是默认的记录操作参数,表示进入这条记录的编辑页面。

    将页面跳转到一个Visualforce页面

    String vfPageName = 'ExamplePage';
    
    PageReference pageRef = new PageReference('/apex/' + vfPageName);
    

    在Salesforce中,“/apex/Visualforce页面名称”的结构可以直接进入Visualforce页面。所以使用这种结构初始化PageReference,则可以跳转到指定的Visualforce页面。

    当然,在Apex中对于跳转到某页面有另一种方法,即:

    Page.vfPageName
    

    跳转到当前页面

    PageReference pageRef = ApexPages.currentPage();
    

    页面参数的代码示例

    在开发的时候,可以对目的页面的参数进行增删或修改。

    得到当前页面的页面参数

    假设当前页面的URL是:“/apex/examplePage?id=1234&name=abcd”,那么使用如下代码即可得到“id”和“name”的值:

    // 得到页面参数,存储在一个Map<String, String>类型的变量中
    Map<String, String> params = ApexPages.currentPage().getParameters();
    
    // 得到参数“id”的值
    String idValue = params.get('id');
    // 或
    // String idValue = ApexPages.currentPage().getParameters().get('id');
    
    // 得到参数“name”的值
    String nameValue = params.get('name');
    

    对页面参数进行设置

    因为页面的参数是由一个Map<String, String>类型的变量进行存储,所以在代码中可以直接设定需要的参数。

    PageReference pageRef = new PageReference('/apex/examplePage');
    
    Map<String, String> params 	= pageRef.getParameters();
    
    params.put('id', '1234');
    params.put('name', 'abcd');
    params.put('test', 'This is a test parameter');
    

    特殊的页面参数

    如果某页面是跳转到某条记录的新建或编辑页面,那么页面中会有“保存(Save)”按钮和“取消(Cancel)”按钮。在定义页面参数时,有几个参数与之相对应:

    • saveURL:“保存”按钮对应的跳转页面
    • cancelURl:“取消”按钮对应的跳转页面
    • retURL:在没有设定“saveURL”时,“保存”按钮对应的跳转页面。在没有设定“cancelURL”时,“取消”按钮对应的跳转页面。如果都没有设定的话,系统默认跳转到主页

    比如:

    Case cas = [SELECT Id, AccountId FROM Case LIMIT 1];
    
    PageReference pageRef = new PageReference('/' + cas.Id + '/e');
    params.put('saveURL', cas.AccountId);
    params.put('retURL', cas.Id);
    params.put('retURL', cas.AccountId);
    

    在上面的代码中,会首先进入某条Case记录的编辑页面。当进行保存后,页面会跳转到其所属的Account记录页面。如果取消编辑,则会跳转回Case记录的页面。

  • 相关阅读:
    高级查询
    简单查询
    CRUD
    T-SQL语句
    数据库规范
    导出含有特定字符串的注册表
    .net、jquery、ajax、wcf实现数据库用户名检测局部刷新
    数据结构实验之二叉树二:遍历二叉树
    传纸条
    数据结构实验之栈与队列五:下一较大值(一)
  • 原文地址:https://www.cnblogs.com/zhuzhubaoya/p/14054011.html
Copyright © 2020-2023  润新知