zoukankan      html  css  js  c++  java
  • 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记录的页面。

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/apex_use_pagereference.html
Copyright © 2011-2022 走看看