今天小编给大家分享一下Salesforce怎么自定义控制器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一.自定义控制器
通过在<apex:page>控制器属性中引用控制器类的名称,将自定义控制器添加到Visualforce页面。当我们的页面使用自定义控制器时,不能使用标准控制器。页面使用不同的属性来设置自定义控制器。
1.可以通过Developer Console 创建一个简单的VF页面 , 点击 File--> New --> Visualforce Page 创建一个 Visualforce页面 .
页面名称我们就叫做 OPDSortManage
<apex:page controller="OPDSortManageController"> <apex:form> <apex:pageBlock title="Contacts List" id="contacts_list"> <!-- 偷工减材中... --> </apex:pageBlock> </apex:form> </apex:page>
当我们的页面编辑好的时候点击保存时,会说我们的Controller未定义,所以小喵建议大家可以先创建Controller其次再创建页面
2.可以通过Developer Console 创建一个简单的自定义控制器,点击File-->New-->Apex Class 创建一个Apex类
类名的话就需要跟我们的页面上引用的Controller的类名一致了哦!
Getter方法将数据从您的控制器中拖出到您的页面上。有相应的setter方法可以让你从页面提交值到你的控制器。
public with sharing class OPDSortManageController { public Integr Num {get;set;} //模拟变量 get 取值 set 设值 //构造 public OPDSortManageController(){ num = 0 ; } }
当我们每次更改代码之后记得保存哦!
3. 切换回我们的OPDSortManage页面并再次保存。这次会提示我们保存成功,如果出现其他错误的话,就需要小伙伴们认真审查代码了.
4. 点击预览打开您的页面的预览,就可以在进行更改时查看。应该打开一个新窗口,显示标准的Salesforce页面标题和侧边栏元素,但没有内容。
二.标准控制器
“ Visualforce使用传统的模型-视图-控制器(MVC)范例,并包括复杂的内置控制器来处理标准动作和数据访问,并提供与Force.com数据库的简单而紧密的集成。这些内置控制器通常称为标准控制器,甚至称为标准控制器。
这意味着为了使Salesforce中的数据显示在Visualforce页面上,需要一个控制器。控制器是在Visualforce页面中引用的Apex类。正是这个控制器使Visualforce页面能够在页面上显示Salesforce数据。控制器从Salesforce“获取”数据并将其“设置”在Visualforce页面上。
自定义控制器和标准控制器之间的区别在于,标准控制器已经提供了创建,读取,更新,删除(CRUD)操作。并且由于绝大多数标准和自定义对象已经具有可用于与该对象关联的数据进行交互的标准控制器,因此我们无需自己编写用于控制器的代码。
<apex:page standardController="Account" recordSetVar="accounts" tab sidebar="false"> <apex:pageBlock > <apex:pageBlockTable value="{!accounts}" var="a"> <apex:column value="{!a.name}"/> </apex:pageBlockTable> </apex:pageBlock> </apex:page>
我们只需使用“ standardController =” Account”行即可使用Account标准对象引用Visualforce页面。此处无需Apex代码。这非常有帮助,因为这意味着我们可以在测试或生产环境中利用DataTables.js和Visualforce,而无需编写任何Apex代码。
三.扩展性控制器
如果你是一个懵懂的少年,你可能和小喵一样写过这样的代码 ↓
错误代码案例 :
<apex:page standardController="Account" Controller="AccountController" recordSetVar="accounts" sidebar="false"> <apex:pageBlock > <apex:pageBlockTable value="{!Account}" var="a"> <apex:column value="{!a.name}"/> </apex:pageBlockTable> </apex:pageBlock> </apex:page>
那么,这样的代码在保存时将会给你报错,大致的意思就是 一个页面不能既存在StandardController标准控制器,又存在Controller自定义控制器.
“控制器就是控制器。扩展不是控制器。不同之处在于扩展不能独自放置在页面上。换句话说,除非页面上首先有一个控制器,否则不允许使用扩展名。另一个显着特征是页面只允许一个控制器。但是可以根据需要添加任意数量的扩展。”
正确案例 :
1.当我们同时需要用到 标准控制器 和 自定义控制器时,可以将自定义控制器设为扩展性的
standardController : 标准控制器
Controller : 自定义控制器
extensions : 扩展性控制器
<apex:page standardController="Solution_Programme__c" extensions="Solution_ProgrammeDeleteController" action="{!init}" sidebar="true"> <apex:outputPanel layout="none" rendered="{!IF(is_Alert_Delete, false,true )}"> <apex:form > <apex >Solution方案只有状态为草案中时才可删除</apex><br/> <apex >请点击<a href="javascript: history.go(-1)" >返回</a></apex> </apex:form> </apex:outputPanel> <apex:outputPanel layout="none" rendered="{!IF(is_Alert_Delete, true, false)}"> <apex:form > <apex >删除成功</apex><br/> <apex >请点击<a href="javascript: history.go(-1)" >返回</a></apex> </apex:form> </apex:outputPanel> </apex:page>
2.自定义控制器
public with sharing class Solution_ProgrammeDeleteController { public String ids {get;set;} public boolean is_Alert_Delete {get; set;} public Solution_ProgrammeDeleteController(ApexPages.StandardController controller) { ids = ApexPages.currentPage().getParameters().get('id'); } public void init(){ Solution_Programme__c solutionProgrames =[select id , Status__c from Solution_Programme__c where id = :ids]; if (solutionProgrames.Status__c.contains('草案中')){ delete solutionProgrames; is_Alert_Delete = true; }else { is_Alert_Delete = false; } } }
以上就是“Salesforce怎么自定义控制器”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。