iframe 问题:Salesforce 未在 SOQL 嵌套查询中获取父级
Posted
技术标签:
【中文标题】iframe 问题:Salesforce 未在 SOQL 嵌套查询中获取父级【英文标题】:Iframe issue: Salesforce not fetching parent in SOQL nested query 【发布时间】:2016-11-28 12:19:45 【问题描述】:情况:您好,我有一个运行良好的查询,并且仅在 salesforce vf 页面中符合预期。
问题从 iframe 调用时,它返回的输出没有其父对象。
apex中的代码:
public class showServiceHistory
CKSW_BASE__Service__c services;
String id = ApexPages.currentPage().getParameters().get('id');
String x;
public myValues()
services = [SELECT id, name, (SELECT Name, Previous_Status__c, New_Status__c, Reason_Code__c, comment__c FROM Service_Status_History__r) FROM CKSW_BASE__Service__c WHERE id=:id];
public String getxx()
x=JSON.Serialize(services);
return x;
VF 中的代码
< apex:page controller="myValues" >
< apex:pageBlock title="!xx" >
< /apex:pageBlock >
< /apex:page >
来自 Salesforce 的输出
"attributes":"type":"CKSW_BASE__Service__c","url":"/services/data/v38.0/sobjects/CKSW_BASE__Service__c/sss","Id":"s","Name":"S","Service_Status_History__r":"totalSize":6,"done":true,"records":["attributes":"type":"Service_Status_History__c","url":"/services/data/v38.0/sobjects/Service_Status_History__c/ss","Service__c":"asss","Id":"uu","Name":"yyy","Previous_Status__c":"xyz","New_Status__c":"y","Reason_Code__c":"xyz","Comment__c":"abc"]
和
iframe 的输出
"attributes":"type":"CKSW_BASE__Service__c","url":"/services/data/v38.0/sobjects/CKSW_BASE__Service__c/444","Id":"444","Name" :"xyz"
从 Vf 页面我得到所需的完整值输出,但从我的 force.com url 中的 iframe 父对象(嵌套查询)不可用 .
但是,当我使用简单的专用查询仅调用父级时,它返回 both(iframe 和 url) 中的值 ) 地点。
为什么我的嵌套 SOQL 无法获取父对象。我在这里错过了什么??
提前致谢。 请帮忙。
Iframe 的输出
【问题讨论】:
【参考方案1】:你检查过你的 FLS 吗?
构建 -> 开发 -> 站点 -> -> 公共访问设置
这是 Force.com 上大多数时候结果的罪魁祸首。
【讨论】:
【参考方案2】:是的,我已经检查过了,它授予了公共访问权限。甚至我也能 在以 JSON 格式转换和打印时看到它们。但我看不到 如果以解析对象形式打印,则它们在 iframe 中。
因此它通过以 Json 字符串格式发送值和通过 在那里解析它。
在虚拟页面中
<apex:page Controller="showServiceHistory" sidebar="false" showheader="false">
<html>
<head>
<!--<meta http-equiv="refresh" content="20" ></meta> -->
</head>
<a id="history_data" style="display:none;">!history</a>
<a id="service_data" style="display:none">!service</a>
<style>
table
width: 100%;
table,
th,
td
border-collapse: collapse;
color: #3088D0;
th,
td
padding: 5px;
text-align: left;
color: #1F497D;
tr
//color: #337AB7;
table#t01 tr:nth-child(even)
background-color: #DCE6F1;
//color: #337AB7;
table#t01 tr:nth-child(odd)
background-color: #fff;
table#t01 th
background-color: #B8CCE4;
//color: #000015;
a:link
color: #62B3E2;
a:visited
color: #62B3E2;
</style>
<table id="t01">
<thead>
<tr>
<th>
Name
</th>
<th>
Previous Status
</th>
<th>
New Status
</th>
<th>
Comment
</th>
</tr>
</thead>
<tbody id="show_values">
</tbody>
</table>
<script>
function x()
var history=; var service=;
history=JSON.parse(document.getElementById("history_data").innerHTML);
service=JSON.parse(document.getElementById("service_data").innerHTML);
var show='';
for(var i=0;i<history.length;i++)
show=show+'<tr><td>'+history[i].Name+'</td><td>'+history[i].Previous_Status__c+'</td><td>'+history[i].New_Status__c+'</td><td>'+history[i].Comment__c+'</td><td>'+service.CKSW_BASE__Location__c+'</td></tr>';
document.getElementById("show_values").innerHTML=document.getElementById("show_values").innerHTML+show;
x();
</script>
</html>
在***代码页中
public class showServiceHistory
List<Service_Status_History__c> histories;
String x;
CKSW_BASE__Service__c services;
String id = ApexPages.currentPage().getParameters().get('id');
public showServiceHistory()
services = [SELECT CKSW_BASE__Resource__c, CKSW_BASE__Location__c, (SELECT Name, Previous_Status__c, New_Status__c, comment__c FROM Service_Status_History__r) FROM CKSW_BASE__Service__c WHERE id=:id];
histories = services.Service_Status_History__r;
public String getService()
return JSON.Serialize(services);
public String getHistory()
return JSON.Serialize(histories);
【讨论】:
以上是关于iframe 问题:Salesforce 未在 SOQL 嵌套查询中获取父级的主要内容,如果未能解决你的问题,请参考以下文章