使用salesforce中的pagereference从url预填充mulit select选取选取列表

使用salesforce中的pagereference从url预填充mulit select选取选取列表,salesforce,apex-code,Salesforce,Apex Code,在salesforce中,我试图构建一个url,该url将预先填充表单中的多选选择列表。基本上,您可以按帐户上的New Meeting按钮,从而重定向到新事件。PageReference重定向返回一个PageReference实例,其url包含预填充参数。但是,多选选择列表仅填充第一个选择。例如: 生成URL的字符串: url = 'https://cs11.salesforce.com/00U/e?00NZ0000000LdLp=401%28a%29&00NZ0000000LdLp=4

在salesforce中,我试图构建一个url,该url将预先填充表单中的多选选择列表。基本上,您可以按帐户上的New Meeting按钮,从而重定向到新事件。PageReference重定向返回一个PageReference实例,其url包含预填充参数。但是,多选选择列表仅填充第一个选择。例如:

生成URL的字符串:

url = 'https://cs11.salesforce.com/00U/e?00NZ0000000LdLp=401%28a%29&00NZ0000000LdLp=401%28k%29';
多选选取列表的字段ID为00NZ0000000LdLp,在上面的URL中重复该字段,因此将所选字段填充为401(a)和401(k)

然后,重定向方法返回:

return new PageReference( url );

当我单击“新建会议”按钮时,只会选择401(a)。如果只是复制并粘贴到地址栏中,401(a)和401(k)都将被选择。为什么页面引用会删除数据?

我认为这可能与页面引用存储url参数的方式有关。它将这些参数存储在映射中,这意味着如果多次重复参数名称,它将被覆盖。它将等同于:

mapParams.put('00NZ0000000LdLp','401(a)'; mapParams.put('00NZ0000000LdLp','401(k)'

您最好自己添加url参数,并执行类似于下面的操作

PageReference ref=新的PageReference(url); 参考getParmeters().put('00NZ0000000LdLp','401(a)&00NZ0000000LdLp=401(k)'

以上只是一个建议。我不确定url转义将如何影响这一想法,但为了回答您最初的问题,我认为在PageReference对象中使用映射可能是您仅获得一个选定值的原因