salesforce 零基础开发入门学习(七)PickList的value值获取
之前介绍过PickList类型的声明以及赋值,但是如何取出呢?一个sObject对象可以理解为一条数据。通过sObject直接取恐怕很难做到,因为他只会显示一个值。这时候就要用到Schema命名空间中的类与方法以及System命名空间下的Schema类来实现。
Schema类
Schema命名空间和Schema类不是同一个概念。Schema类属于System命名空间下,Schema命名空间包含很多类处理Schema元数据信息。
Schema类的方法包含schema 信息描述。
Schema类主要方法如下:
- public static Map<String, Schema.SObjectType> getGlobalDescribe():
返回一个map,这个map表示所有的sObject名称(key)到sObject tokens(value)的map,其中tokens可以为在你的项目中标准的和自定义的Object对象。
这个map具有以下的特征:
1.动态的,根据权限在运行时生成sObject;
2.sObject名称不区分大小写;
3.key可以映射出Object是否是一个自定义对象;
4.key如果是标准的sObject则不需要前缀,否则需要加命名空间的前缀。
- public static List<Schema.DescribeDataCategoryGroupResult> describeDataCategoryGroups(String sObjectNames)
返回一个与指定的对象关联的类别组列表.
- public static List<Schema.DescribeSObjectResult> describeSObjects(List<String> sObjectTypes)
返回指定的sObject的描述信息。通常可以先调用getGlobalDescribe()方法获取组织中所有的对象列表,然后通过迭代遍历使用此方法获取指定的单个的sObject的元数据信息。
Schema命名空间
Schema命名空间下的类和方法用来处理schema 元信息(metadata),当实例化或者使用Schema类或者方法的时候,可以省略Schema命名空间。
以下的代码中封装了PickList的values的值的获取方法,形参分别为需要获取的sObjectName以及字段的名称,如果不存在指定的sObjectName或者字段名称没有设置返回值,else代码块中,需要的童鞋可以自行设定不存在情况下返回的内容。Schema命名空间中主要类的学习可以参照代码中的类查看相关方法。
- public class PickListValuesUtil {
- /*
- 通过sObjectName和指定字段获取PickList的value值
- */
- public static Map<String, object> getPicklistValues(String sObjectName, String sFieldName){
- Map<String, object> picValues= new Map<String, object>();
- Map<String, Schema.SObjectType> sObjectDescribeMap = Schema.getGlobalDescribe();
- if (sObjectDescribeMap.containsKey(sObjectName)) {
- Map<String, Schema.SobjectField> sObjectFieldsMap =
- sObjectDescribeMap.get(sObjectName).getDescribe().fields.getMap();
- if (sObjectFieldsMap.containsKey(sFieldName)) {
- Schema.DescribeFieldResult sObjectFieldDescribe = sObjectFieldsMap.get(sFieldName).getDescribe();
- List<Schema.PicklistEntry> lPickEntryList = sObjectFieldDescribe.getPicklistValues();
- for (Schema.PicklistEntry tPicklistEntry : lPickEntryList) {
- picValues.put(tPicklistEntry.getValue(), new Map<String,object>{
- 'value' => tPicklistEntry.getValue(),
- 'isActive' => tPicklistEntry.isActive(),
- 'isDefaultValue' => tPicklistEntry.isDefaultValue(),
- 'label' => tPicklistEntry.getLabel()
- });
- }
- } else {
- //TODO 不存在此字段的执行
- }
- } else {
- // TODO 不存在此sObject的执行
- }
- return picValues;
- }
- }
调用方式如下所示:
Student__c具有Education__c字段,并且声明类型为PickList.value值如图1所示。通过输出Map用来更好的查看Map内容。
- Map<String,object> educationValues = SchemaUtil.getPicklistValues('Student__c','Education__c');
- System.debug(educationValues);
输出结果Map集合如下所示:
- {
- 初中={isActive=true, isDefaultValue=false, label=初中, value=初中},
- 博士生={isActive=true, isDefaultValue=false, label=博士生, value=博士生},
- 大学={isActive=true, isDefaultValue=false, label=大学, value=大学},
- 小学={isActive=true, isDefaultValue=false, label=小学, value=小学},
- 教授={isActive=true, isDefaultValue=false, label=教授, value=教授},
- 研究生={isActive=true, isDefaultValue=false, label=研究生, value=研究生},
- 高中={isActive=true, isDefaultValue=false, label=高中, value=高中}
- }
如果想获取PickList的所有Value值,只需要取出集合后,通过Map的keySet()方法便可以获取所有value内容,如果需要获取相应的Entry信息,可以通过Map的value值。
本篇只是通过封装的方法简单讲解获取PickList的value值,如果想要详细了解Schema命名空间以及System命名空间下的Schema类以及System命名空间下的sObject类,请查看官方API文档,如果本篇有写错的地方欢迎批评指正。有疑问可以下方留言相互交流。
图1
salesforce 零基础开发入门学习(七)PickList的value值获取的更多相关文章
- 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解
salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schem ...
- 【转载】salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建 VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的 ...
- 【转载】salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable 本篇知识参考:https://developer.salesforce.com/trailhead/for ...
- 【转载】salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL) salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesfo ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- 【转载】salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载 目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新 ...
- salesforce 零基础开发入门学习(一)Salesforce功能介绍,IDE配置以及资源下载
目前国内已经有很多公司做salesforce,但是国内相关的资料确是少之又少.上个月末跳槽去了新公司,主要做的就是salesforce,不过当时想要看一些相关资料确实比较难.为了避免想要零基础学习的人 ...
- salesforce 零基础开发入门学习(十一)sObject及Schema深入
sObject在salesforce中占有举足轻重的位置,除了在数据库中数据以外,我们还应该关心一下他的元信息.元信息封装在Schema命名空间内. 作为面向对象语言,我们可以畅想一下如果我们是设计人 ...
- salesforce 零基础开发入门学习(十五)salesforce中formula的使用(不含Date/Time)
本文参考官方的formula介绍PDF:https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_usefu ...
随机推荐
- python+eclipse环境搭建
一.Eclipse 的安装 Eclipse的安装是很容易的.Eclipse是基于java的一个应用程序,因此需要一个java的运行环境(JRE)才行.(我这里主要介绍windows下的安装) JRE的 ...
- Fresco简单的使用—SimpleDraweeView
本文出处:http://blog.csdn.net/u011164565/article/details/51330778 Fresco是一个第三方库,github官网地址:https://githu ...
- rhel7报错整理
报错现象1: 安装过程需要一段时间,等待完成. 重启后进程 输入 q 再次输入 yes 重启后进入 报错现象2: 挂载镜像后,系统一重启报错: 来自 ...
- GridView里的文本框改变事件
<asp:TemplateField HeaderText="实收数量"> <ItemTemplate> <asp:TextBox ID=" ...
- testng参数化(提供测试数据)【转】
testng提供测试数据的两个注释:@DataProvide和@Parameter 一.通过testng.xml中设置参数 (实际上testng.xml只是一个名字,可以起任何一个名字,只要是.x ...
- 使用属性android:onClick,出现异常NoSuchMethodException
在Activity中注册点击事件有两种方式,setOnClickListener或在xml中设置控件的android:onClick="gotoSecond"属性,在Activit ...
- 口水话 闭包中this的指向
前言:高程这本书真是神奇,每复习一遍,都会有新的收获.话说我看书有个习惯,要是看得似懂非懂的地方就喜欢打个“?”.这次看到高程第七章“函数表达式”关于闭包与this对象的部分,发现已经积攒了2个问号了 ...
- explode,split,preg_split性能比较
explode,split,preg_split性能比较 分类: php2012-07-12 09:46 1109人阅读 评论(1) 收藏 举报 三个函数都是用来对字符串进行分割,下面分几个实验来 ...
- 在Python中调用glutInit遇到OpenGL.error.NullFunctionError的解决方法
在window10 64bit + Python环境下,通过pip install PyOpenGL成功之后,无奈执行到glutInit()时候总是报错. OpenGL.error.NullFunct ...
- Java中创建对象的几种方式
Java中创建对象的五种方式: 作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字.使用Cl ...