首先创建一个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。