我希望能够在Salesforce网站页面上为当前会话读取/写入一些变量。
我有一个使用Salesforce网站构建的网站,我需要在所有页面上存储/检索一些值(考虑到我正在构建类似于购物车的东西)。但是,我找不到任何有关如何向会话(匿名用户)读写变量的好例子。
我将Visualforce页面与Apex中内置的多个控制器一起使用。
问候
我有一个APEX课程,用于每天晚上7点发送电子邮件:
global class ReportBroadcaster implements Schedulable {
global ReportBroadcaster() {
}
global void execute(SchedulableContext sc) {
send();
}
global void send() {
PageReference page = new PageReference('/apex/nameofvfpage');
page.setRedirect(true);
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
email.setSubject('Example Subject');
email.setHtmlBody(page.getContent().toString());
email.setToAddresses(new String[]{'test@test.com'});
Messaging.sendEmail(new Messaging.SingleEmailMessage[]{email});
}
}
当我通过匿名APEX通过ReportBroadcaster实例执行send()方法时,它按预期传递.但是,当我安排课程时,电子邮件将以空白正文发送.如果我将电子邮件正文切换为纯文本,它可以正常传送(但这对我不起作用).
我该如何工作?
更新:
你不能从调度的APEX或@future方法调用PageReference实例上的getContent()(我不确定为什么会这样,但它就是这样).我认为解决方案是创建一个我将从@future方法调用的Web服务.看起来令人难以置信的hacky,但我不确定我还能做些什么.
最终更新:这是如何从预定的APEX发送HTML电子邮件:
虽然这种方法很迂回,但它确实有效.
我想在运行时知道变量/属性的类.例如:
Integer i = 5;
//pseudo-code
if (i.className == 'Integer') {
System.debug('This is an integer.');
} else {
System.debug('This is not an integer, but a ' + i.className);
}
Run Code Online (Sandbox Code Playgroud)
我找不到在文档中返回类类型的方法/属性(假设它在那里).我错过了吗?
我们有一个预定的工作,每个月1日运行,首选开始时间为凌晨1点.使用Salesforce界面(开发| Apex类| Schedule Apex)安排作业.运行时,它会根据系统日期(System.today();)为记录设置月份字段.偶尔,月份设置错误,我怀疑这是由于日期变量设置为系统日期.
如果我将作业设置为凌晨1点运行,以我的用户身份登录(时区设置为CDT),使用该界面,将返回什么值System.today()?目前的CDT日期会被退回,还是GMT日期?
我想在我的Apex代码中使用Enum值,因为我们在使用外部服务时有一些严格的类型,但是当我从外部服务获得响应时,我正在努力将Enum值的String表示转换回Enum所以它可以在我的代码中使用.
要在C#中执行此操作,我会这样做:
DayOfWeek wednesday =
(DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Wednesday");
Run Code Online (Sandbox Code Playgroud)
但在Apex代码中我找不到办法做到这一点.有人有解决方案吗?
我正在尝试开发一个Visualforce自定义组件,该组件从Visual Force页面获取属性。我需要在控制器的构造函数中访问该属性,以便可以从数据库中获取一些记录,并且需要在组件中显示这些记录。但是问题是我没有在Controller中获得属性值。
请参阅下面的代码以清楚地了解问题。
控制器:
public with sharing class AdditionalQuestionController {
public String CRFType {get;set;}
public AdditionalQuestionController () {
system.debug('CRFType : '+CRFType);
List<AdditoinalQuestion__c> lstAddQues = [Select AddQues__c from AdditoinalQuestion__c wehre CRFType = :CRFType];
system.debug('lstAddQue : '+lstAddQue);
}
}
Run Code Online (Sandbox Code Playgroud)
零件 :
<apex:component controller="AdditionalQuestionController" allowDML="true">
<apex:attribute name="CRFType" description="This is CRF Type." type="String" required="true" assignTo="{!CRFType}" />
<apex:repeat value="{!lstAddQue}" var="que">
{!que}<br />
</apex:repeat>
</apex:component>
Run Code Online (Sandbox Code Playgroud)
VisualForce页面:
<apex:page >
<c:AdditionalQuestionComponent CRFType="STE" />
</apex:page>
Run Code Online (Sandbox Code Playgroud)
谢谢,Vivek
我无法在线获得有关此问题的任何可靠信息.但我认为这一定是一个必须影响很多人的问题.
基本上我在沙盒中编写了一个简单的触发器和测试类,测试了它,当它很好的时候我将它部署到了PRD.
我首先尝试了验证模式,但是我遇到了这个错误.
System.LimitException:SOQL查询太多:101
显示此错误发生在其他一些测试类中.所以我觉得我的触发器中的测试用例运行了,再加上剩下的测试用例不知何故超出限制.
因此,我们的单元测试中的SOQL查询总数必须小于100.这有点难以正确吗?我可以想象有这么多测试用例,我们肯定需要超过100个查询.
那么有什么方法可以避免达到这个限制,因为Salesforce在部署一行代码时会运行所有测试用例.
我没有任何常见的嫌疑人......就像for循环中的SOQL一样.
更新:2012年8月19日:我现在发布测试类和触发器的源代码
测试类:
@isTest
Run Code Online (Sandbox Code Playgroud)
private class TestAccountDuplicateWebsiteTrigger {
static testMethod void myUnitTest() {
try{
// TO DO: implement unit test
Test.startTest();
Account a1;
a1 = new Account();
a1.name = 'GMSTest';
a1.Website = 'www.test.com';
Account a2;
a2 = new Account();
a2.name = 'GMSTest2';
a2.Website = 'www.test.com';
Account a3;
a3 = new Account();
a3.name = 'GMSTest3';
a3.Website = 'www.test1.com';
insert a1;
insert a2;
//insert a3;
Test.stopTest();
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
}
触发 …
您好我在site.com中遇到问题查找页面预览.Site.com提供构建网站和销售人员以及云相关操作的平台.
我的客户给了我关于project..project的要求,我们已经在那里修改了项目网站的内容.我无法找到页面.
测试用户(我的帐户) - 在此图像中,您可以看到site.com选项

客户帐户 - 但这里没有site.com选项

我是销售人员和site.com的新手,我做了研发,但都无法搞清楚.请帮我!!
我在gobal页脚组件中的代码 -
<div id="copyright">
© {!$Label.copyright}
</div>
Run Code Online (Sandbox Code Playgroud)
它显示在页面中"© Copyright 2012 "
我是Salesforce的新手.我只是想修改文本
"© Copyright 2013 "
Run Code Online (Sandbox Code Playgroud)
取代2012年我想用2013 ...
我试过了什么?
$Label 是全球变量搜索版权...如果我错过了一些基本的部分来检查,请帮助我!
谢谢!!
我正在通过Static Resourced加载CSV文件来测试我的APEX代码.我在测试中使用以下代码:
List<Territory_Zip_Code__c> territoryData = Test.loadData(Territory_Zip_Code__c.sObjectType, TERRITORY_ZIP_CODES_STATIC_RESOURCE_NAME);
Run Code Online (Sandbox Code Playgroud)
CSV文件的前几行如下所示:
Territory__c,Zip_Code__c
ABC,123
DEF,456
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
System.StringException:未知字段:Territory__c
Territory__c 是我的自定义sObject 的有效API字段名称.
我也尝试在字段名称前添加sObject名称,My_Territory__c.Territory__c但是也没有用.
另外,我尝试使用字段名称而不是API名称(例如Territory),但这也不起作用.
有许多使用Test.loadData和内置sObjects的示例,例如Account和Contacts,但没有显示自定义sObject的示例.我开始认为这对于自定义对象是不可能的.