You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Visualforce页面显示Apex控制器查询的子对象字段?

解决Visualforce页面展示子查询字段的问题

第一步:确认Apex控制器的子查询正确性

首先确保控制器查询里的子对象关系名称和字段选取正确,示例代码如下:

public class FormController {
    public FormularioDeVisita__c visitaRecord {get; set;}

    public FormController() {
        // 注意:FormularioVisitaChild__r是父到子的关系API名称,需与系统内实际名称一致
        visitaRecord = [SELECT Id, Name, 
                          (SELECT Id, CampoExemplo1__c, CampoExemplo2__c FROM FormularioVisitaChild__r) 
                        FROM FormularioDeVisita__c 
                        WHERE Id = ApexPages.currentPage().getParameters().get('id')];
    }
}

第二步:在Visualforce中遍历子对象列表

子查询返回的是sObject列表,无法直接像父对象字段那样调用,必须用<apex:repeat>标签遍历输出:

<apex:page controller="FormController">
    <!-- 父对象字段展示 -->
    <div>
        <strong>Nome da Visita:</strong> {!visitaRecord.Name}
    </div>

    <!-- 子对象字段展示 -->
    <div style="margin-top:20px;">
        <h3>Itens do Formulário</h3>
        <table border="1" cellpadding="5">
            <thead>
                <tr>
                    <th>Campo Exemplo 1</th>
                    <th>Campo Exemplo 2</th>
                </tr>
            </thead>
            <tbody>
                <!-- 遍历子对象列表 -->
                <apex:repeat value="{!visitaRecord.FormularioVisitaChild__r}" var="childItem">
                    <tr>
                        <td>{!childItem.CampoExemplo1__c}</td>
                        <td>{!childItem.CampoExemplo2__c}</td>
                    </tr>
                </apex:repeat>
                
                <!-- 处理无子记录的情况 -->
                <apex:outputPanel rendered="{!empty(visitaRecord.FormularioVisitaChild__r)}">
                    <tr>
                        <td colspan="2" style="text-align:center;">Nenhum item encontrado</td>
                    </tr>
                </apex:outputPanel>
            </tbody>
        </table>
    </div>
</apex:page>

关键注意事项

  • 关系名称验证:FormularioVisitaChild__r是父对象到子对象的子关系API名称,可在Salesforce设置中找到子对象的父查找字段,查看其「Child Relationship Name」后加上__r后缀得到,名称错误会导致无法获取子数据。
  • 字段权限:确保当前用户对子对象的展示字段有读取权限,否则字段会显示为空。
  • 字段选取:子查询中必须明确列出要展示的所有子对象字段,不能使用SELECT *的方式。

内容的提问来源于stack exchange,提问作者Igor Guedes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:35:18