有没有办法从 Apex 的 Visualforce 页面获取字段查找 ID?

Is there way to get field lookup Id from Visualforce Page in Apex?

有没有办法获取元素框中显示的标签 ID。查找 Id 很好,我们可以得到它,但要获取“贷款”的标签 Id ?

如有任何帮助,我们将不胜感激!

那样不行。您在评论中描述的内容通常被称为“URL 黑客攻击”。在“new”、“edit”等标准页面上它可以工作——但它基于 <input name="blabla"> 而不是 <input id="blabla">.

看看这个:https://www.google.com/?q=hello

检查字段的来源 - 有 name 但没有 id。然而我预先填充了该字段。

由于它是一个 Visualforce 页面 - 您可以控制 URL 参数。你可以做出类似 /apex/vfPageName?contractId=.... 的东西,你不必试图对 CF00N0l00000WER2 变得聪明。然后在 Apex 构造函数中,您可以使用 ApexPages.currentPage.getParameters().get('contractId').

我不知道你那里有什么控制器。只是 <apex:page controller="MyClass"<apex:page standardController="Contract" extensions="MyClass"。第二个会让您读取单击按钮的记录的 ID,但是如果您需要通过 url 传递的更多参数 - 请查看 getParameters()

https://salesforce.stackexchange.com/questions/69808/get-current-page-query-string-parameters-in-apex

如果您真的需要 ID...它们的形式为“CF”(自定义字段)+ 字段 ID,如您查看字段定义时在设置中看到的那样.例如,您可以在 FieldDefinition table 中查询 ID。但对于您需要的东西 - 看起来我们会使事情过于复杂。

问题:一旦用户单击 New 按钮

,就自动使用名称填充查找

方法:如果您获得查找的字段定义 ID,则为 DurableID 分配填充查找名称。

查询获取 DurableID :

1.List<FieldDefinition> fieldDefiInstance = [Select DeveloperName,label,Id,DurableId,EntityDefinitionId From FieldDefinition where EntityDefinition.DeveloperName='Party' and label = 'Contract'];

2.String fieldKey =fieldDefiInstance[0].DurableId.replace(fieldDefiInstance[0].EntityDefinitionId+'.','')+'CF';

3.System.debug('fieldKey=>'+fieldKey);

获得的 ID 为 CF00N000000XXX。现在在 url 中分配 CF00N000000XXX=ContractName 示例:https://sales--cldev.my.salesforce.com/XXX/e?**CF00N000000XXX=ContractName**&inline=1

结果: