Url Apex在Pagereference参数中推送ID列表

Url Apex在Pagereference参数中推送ID列表,url,controller,salesforce,apex,visualforce,Url,Controller,Salesforce,Apex,Visualforce,我试图使用字符串将ID列表推送到URL参数,当VF页面加载时,它是这样的-我得到了一堆%27%2C%27: /00O1000000W6C5?pv0=%27A1D1F000000GE8TEAG%27%2C%27A1D1F000000GE1AAW%27%2C%27a1D1f000000GE3QEAW%27%2C%27a1D1f000000GE3VEAW%27&pv1=%27A1D1F000000GE8TEAG%27%2C%27A1D1F000000GE1AAW%27%2C%27a1D1f000000

我试图使用字符串将ID列表推送到URL参数,当VF页面加载时,它是这样的-我得到了一堆%27%2C%27:

/00O1000000W6C5?pv0=%27A1D1F000000GE8TEAG%27%2C%27A1D1F000000GE1AAW%27%2C%27a1D1f000000GE3QEAW%27%2C%27a1D1f000000GE3VEAW%27&pv1=%27A1D1F000000GE8TEAG%27%2C%27A1D1F000000GE1AAW%27%2C%27a1D1f000000GE3QEAW%27%2C%27a1D1f000000GE3VEAW%27%2C%27a1D1f000000GE3VEAW%27%27%

而我的期望是像这样发布

/00O1f000000W6c5?pv0='a1D1f000000GC8tEAG','a1D1f000000GE1AEAW','a1D1f000000GE3QEAW'

下面是我的控制器和代码

public with sharing class AccountLoanCollateralControllerTESTSAAD {

public Id AccountId { get; set; }
public Account Acc { get; set; }
list<ID> listcoll = new list<ID>();
list<string>liststring=new list<string>();
string idString;
string url;


public AccountLoanCollateralController(ApexPages.StandardController controller) {





Acc= (Account) controller.getRecord();
list<LLC_BI__Account_Collateral__c> AccColl=[select LLC_BI__Collateral__c from LLC_BI__Account_Collateral__c where LLC_BI__Account__c =:Acc.Id and LLC_BI__Collateral__r.Type1__c like '%agreement%'];

for(LLC_BI__Account_Collateral__c ac: AccColl)
{

listcoll.add(Ac.LLC_BI__Collateral__c);
liststring.add('\''+string.valueof(Ac.LLC_BI__Collateral__c)+'\'');

}

idString = string.join(liststring,',');
url=  string.valueof(idString);


}


public PageReference Run() {

        //build your code logic here
       PageReference pageRef = new PageReference('/00O1f000000W6c5?pv0=' + url + '&pv1='+url);
        pageRef.setRedirect(true);
       return pageRef;

       }


}

这是预期的功能。浏览器会自动对URL进行编码,并用其名称替换字符

您需要在接收参数的页面中输入


如果这是一个您无法控制的标准salesforce页面,那么您所做的基本上就是URL黑客攻击,并且正在了解这样做的后果。

尝试发送不带省略号和不带省略号的页面,您将其复杂化了。报告不需要与SOQL相同的语法

只有逗号分隔的ID

在我的组织中:/00O0g000005Z3I7?pv0=001700000LG8WA、001700000LG8WG、001700000LG8WX&isdtp=vw


谢谢,非常感谢-我正在尝试以逗号分隔的模式将ID列表推送到动态报表的pv0筛选器中,因为现在报表类不支持连接报表编程…谢谢,下面是我所做的-我在Account对象上创建了一个名为report_Collateral__c的文本字段,以及帐户对象上具有此详细信息的URL链接:/00O1f000000W6hj?pv0={!Account.Report_Collateral___c}&pv1={!Account.Report_Collateral__c},在帐户记录上,我设置此字段为:a1D1f000000GC8t,a1d1f0000ge1a当最终用户单击该链接时,URL在浏览器中显示为:dev.cs99.my.salesforce.com/00O1f000000W6hj?pv0=a1d1f0000gc8t%2ca1d1f0000ge1a&pv1=a1d1f0000gc8t%2ca1f0000ge1a破坏报告过滤器的%2C结尾类似于,会被不必要地编码。该URL字段是普通可编辑字段还是公式?还是像按钮、链接和操作菜单中的链接一样是真正的链接?您可能想尝试一些公式,阅读一些关于URLFOR、HYPERLINK。。。最坏的情况是,看看你是否可以用SUBSTITUTEmyFinalLink,%2C、,。如果它是一个真正的链接-是的,看看你是否能用公式字段得到更好的结果。我现在有点困惑,你对链接/公式字段有问题吗?或者使用apex代码和页面引用?或者你只是在做什么来显示报告的情况,不管怎样?我试图表明逗号分隔正在得到URL编码,这阻止了报告过滤器采取行动。总的来说,这里是期望值:我在pv0和pv1之后拥有的ID是从VF页面控制器级别的soql查询中获取的,这些ID是作为一个列表出现的,我使用逗号分隔:string.joinliststring,',';VF页面调用run方法,该方法保存对报表的页面引用-我认为在account对象上使用链接的选项不起作用,这只是为了演示从controller liststring中删除引号。添加'\+string.ValueOfca.LLC\'u BI\'u c+';最终得到的结果与链接选项相同,即逗号符号的URL编码