首先创建一个Visualforce页面并添加到页面布局。
Visualforce页面
-
条件语句:
在Visualforce页面的条件语句中,您需要使用正确的Visualforce表达式语法来插入JavaScript代码。此外,Visualforce的表达式语法不支持JavaScript直接调用,因此需要将条件逻辑转换为字符串比较。 -
脚本位置:
将脚本移到Visualforce页面的顶部,以确保在页面加载时能够正确执行。
Visualforce页面
<apex:page standardController="Opportunity" action="{!markread}" extensions="OpportunityExtension">
<apex:form>
<script>
window.onload = function() {
var contractField = '{!Opportunity.Contract__c}';
var messageShown = '{!Opportunity.MessageShown__c}';
if (contractField !== '' && messageShown === 'false') {
alert("Contract was successfully created");
}
};
</script>
</apex:form>
</apex:page>
Apex控制器
确保OpportunityExtension
类和markread
方法正确更新 MessageShown__c
字段。
public with sharing class OpportunityExtension {
private final Opportunity opp;
public OpportunityExtension(ApexPages.StandardController controller) {
this.opp = (Opportunity)controller.getRecord();
}
public PageReference markread() {
if (opp.Contract__c != null && !opp.MessageShown__c) {
opp.MessageShown__c = true;
update opp;
}
return null;
}
}
解释
-
页面脚本:
window.onload
确保脚本在页面加载完成后运行。- 将字段值转化为JavaScript字符串来进行比较。
- 只有当
Contract__c
有值且MessageShown__c
为false时,才会显示警告消息。
-
Apex控制器:
- 在
markread
方法中,先检查条件,然后再更新MessageShown__c
字段。 - 确保条件和更新逻辑正确执行。
- 在
步骤
- 将Visualforce页面代码和Apex控制器代码复制到Salesforce开发者控制台或您的代码编辑器中。
- 保存更改并刷新您的Opportunity页面以测试功能。
当 Contract__c
字段有值且 MessageShown__c
为false时,页面加载时会显示警告消息,然后将 MessageShown__c
更新为true。