salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用
上一篇介绍VF中常用的变量,此篇主要内容为VF页面可以直接使用的函数,主要包括Date相关函数,Text相关函数,Information相关函数以及logic相关函数,其他相关函数,比如math相关函数等可以自行去练习使用。
一.Date相关常用函数
使用Date相关函数可以很轻松的获取今天、现在时刻等信息,主要函数如下:
1.now():此函数可以获取当前时刻的信息,精确到秒,如果需要某种格式的显示,可以进行相关格式的format;
2.today():此函数可以获取当前日期的信息,包括年月日;
3.year(date):此函数获取指定date的年的信息,使用此函数需要传递一个date类型的参数;
4.month(date):此函数获取指定date的月的信息,使用此函数需要传递一个date类型的参数;
5.day(date):此函数获取指定date的日的信息,使用此函数需要传递一个date类型的参数;
6.date(year,month,day):此函数通过参数传递年月日三个参数返回一个date类型的结果,包括年月日以及星期等信息;
7.datevalue(expression):此函数通过expression转换成date值,参数可以是date/time value或者text value或者表达式;
8.datetimevalue(expression):此函数通过expression转换成date/time值,参数可以是date/time value或者text value或者表达式。
代码举例:
<apex:page >
<apex:pageBlock title="日期相关函数汇总">
当前的时间为:
<apex:outputText value="{0,date,YYYY-MM-dd HH:mm:ss}">
<apex:param value="{!now()}" />
</apex:outputText>
<br />
当前的日期为:
<apex:outputText value="{!TODAY()}"></apex:outputText>
<br />
当前的日期(格式转换)为:
<apex:outputText value="{0,date,YYYY-MM-dd}">
<apex:param value="{!TODAY()}" />
</apex:outputText>
<br />
当前日期的年:
<apex:outputText value="{!year(today())}"></apex:outputText>
<br />
当前日期的月:
<apex:outputText value="{!month(today())}"></apex:outputText>
<br />
当前日期的日:
<apex:outputText value="{!day(today())}"></apex:outputText>
<br />
自定义年月日设置日期:
<apex:outputText value="{!date(2017,2,13)}"></apex:outputText>
<br />
使用datevalue函数显示日期(参数为date/time类型):
<apex:outputText value="{!datevalue(now())}"></apex:outputText>
<br />
使用datevalue函数显示日期(参数为文本类型):
<apex:outputText value="{!datevalue('2017-02-13')}"></apex:outputText>
<br />
使用DATETIMEVALUE函数返回一个日期+GMT时间的值,传递的参数可以为date/time类型也可以为字符串:
<apex:outputText value="{!datetimevalue('2017-02-13 11:00:00')}"></apex:outputText>
</apex:pageBlock>
</apex:page>
运行结果:

二.Information相关函数
1.BLANKVALUE(expression,substitute_expression):当某个变量或者某个值为空字符串情况下设置默认值,形参一为变量,形参二为所替换成的默认值;
2.ISBLANK(expression):判断某个表达式或者变量是否为空,如果value为空或者为null则返回true,否则返回false;
3.NULLVALUE(expression,substitute_expression):当某个变量或者某个值为null情况下设置默认值,形参一为变量,形参二为所替换成的默认值;
4.PRIORVALUE:通常用于validation rule中获取update前一刻的值。
代码举例:
1.controller层声明一个变量,设置为null情况
public with sharing class InformationRelatedFunctionController {
public String testVariable{get;set;}
}
2.page层对function进行测试
<apex:page controller="InformationRelatedFunctionController">
testVariable是否为空:<apex:outputText value="{!ISBLANK(testVariable)}"></apex:outputText>
<br/>
testVariable是否为null:<apex:outputText value="{!ISNULL(testVariable)}"></apex:outputText>
<br/>
testVariable为空情况下设置一个默认值:<apex:outputText value="{!blankvalue(testVariable,'测试默认值')}"></apex:outputText>
<br/>
</apex:page>
运行效果:

三.Logical Function相关函数
1.AND(logical1,logical2,...):所有的逻辑均为true情况下返回true;
2.CASE(expression,case1,result1,case2,result2,...,else-result):类似apex或者java中的switch case用法;
3.IF(logical_test, value_if_true, value_if_false):针对逻辑表达式,正确执行value_if_true,错误执行value_if_false;
4.ISCHANGED(field):判断字段前后是否有更改,通常用于validation rule中判断某字段前后是否更改;
5.ISNEW():判断某个formula字段的记录是否是新建的,如果记录是新建的则返回true,如果对于已经存在的记录此字段被更新,则返回false;
6.ISNUMBER(text):判断text文本是否全部为数字,如果全部是数字,则返回true,否则为false;
7.NOT(logical):对逻辑内容取反操作,等同于 !logical;
8.OR(logical1,logical2,...):所有的逻辑中只要有一个为true则返回true;
部分函数代码举例:
1.LogicalRelatedFunctionController :声明两个变量,用于page页的业务逻辑处理
public with sharing class LogicalRelatedFunctionController {
public String testNumber{
get{
return '123';
}
}
public Integer comparedValue{
get{
return 1;
}
}
}
2.LogicalRelatedFunctionPage:函数应用
<apex:page controller="LogicalRelatedFunctionController">
<apex:pageBlock title="isnumber函数用法">
testNumber是否为数字:<apex:outputText value="{!ISNUMBER(testNumber)}"></apex:outputText>
</apex:pageBlock>
<apex:pageBlock title="and函数用法">
<apex:outputText value="只有testNumber是数字并且comparedValue大于0才会显示此段内容"
rendered="{!AND(isnumber(testNumber),comparedValue>0)}">
</apex:outputText>
</apex:pageBlock>
<apex:pageBlock title="case函数用法">
{!CASE(comparedValue,0,'value is 0',1,'value is 1','value is other')}
</apex:pageBlock>
<apex:pageBlock title="IF函数用法">
<apex:outputText value="text value" style="{!IF(comparedValue>0,'color:red;','')}">
</apex:outputText>
</apex:pageBlock>
</apex:page>
运行效果:

四.Text Function相关常用函数
1.BEGINS(text,compare_text):判断某个字符串是否以指定的字符串开始,是返回true,否则返回false;
2.BR():插入一行,类似HTML中的<br/>
3.CONTAINS(text, compare_text) :判断字符串中是否包含指定的字符串,如果包含返回true,否则返回false;
4.FIND(search_text, text[, start_num]) :查询指定的字符串在字符串的位置,类似apex中的indexOf方法的功能,坐标从1开始;
5.ISPICKVAL(picklist_field, text_literal):判断picklist字段当前的记录是否为某个字符串;
6.LEN(text):返回字符串的长度;
7.TEXT(value):将其他类型转换成字符串,包括percent/number/date等;
8.TRIM(text):将字符串进行去空处理,与apex中String.trim用法相同;
9.VALUE(text):将字符串转换成number类型。
部分函数代码举例:
1.TextRelatedFunctionController:定义三种对象,方便page页逻辑处理
public with sharing class TextRelatedFunctionController {
public String testVariable{get{
return 'test value';
}}
public String testTrimVariable{get{
return ' test value ';
}}
public String testToNumberVariable {get{
return '123';
}}
}
2.TextRelatedFunctionPage:部分函数使用举例
<apex:page controller="TextRelatedFunctionController">
testVariable对象的值为:{!testVariable}
<apex:pageBlock title="BEGINS函数用法">
testVariable对象值是否以test字符开始 : {!BEGINS(testVariable,'test')}
</apex:pageBlock>
<apex:pageBlock title="CONTAINS函数用法">
testVariable对象值是否包含test字符 : {!CONTAINS(testVariable,'test')}
</apex:pageBlock> <apex:pageBlock title="FIND函数用法">
testVariable对象中lue所在的位置:{!FIND('lue',testVariable)}
</apex:pageBlock>
<apex:pageBlock title="LEN函数用法">
testTrimVariable对象值的长度为: {!LEN(testTrimVariable)}
</apex:pageBlock>
<apex:pageBlock title="TRIM函数用法">
testTrimVariable对象trim以后长度为:{!LEN(TRIM(testTrimVariable))}
</apex:pageBlock>
<apex:pageBlock title="VALUE函数用法">
<apex:outputText value="{!IF(VALUE(testToNumberVariable) > 100,'testToNumberVariable转换成number大于100','testToNumberVariable转换成number小于100')}">
</apex:outputText>
</apex:pageBlock>
</apex:page>
运行效果:

总结:此篇只是讲解一些简单常用的函数的用法,还有一些其他的比如Math相关的,Encoding相关的等函数没有列出,如果VF页需要使用到相关函数时,请参考page的PDF,此片仅起到抛砖引玉作用。篇中描述有错误的地方欢迎指出,有不懂得欢迎留言。
salesforce 零基础学习(六十六)VF页面应善于使用变量和函数(二)常用函数的使用的更多相关文章
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce零基础学习(九十六)Platform Event浅谈
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trai ...
- salesforce零基础学习(九十六)项目中的零碎知识点小总结(四)
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_ke ...
- salesforce 零基础学习(六十五)VF页面应善于使用变量和函数(一)常用变量的使用
我们在使用formula或者validation rules等的时候通常会接触到很多function,这些函数很便捷的解决了我们很多问题.其实很多函数也可以应用在VF页面中,VF页面有时候应该善于使用 ...
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- salesforce零基础学习(一百零五)Change Data Capture
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...
- salesforce 零基础学习(六十八)http callout test class写法
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
随机推荐
- MySQL 表的命令
1.查看表的结构: desc 表名; show columns from 表名; describe 表名; show create table 表名; 2.修改表名 rename table 原表名 ...
- 外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样(转)
源:外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样 前几天看到开源电子论坛(openedv.com)有人在问这个问题,我特意去做了这个实验,这样用外部SRAM就跟用内部SRAM一样 ...
- RFID射频卡超市购物结算系统
RFID射频卡超市购物结算系统 这段时间在做RFID射频卡超市购物结算系统,这个系统的设想来自于大学研究课题,但是我们在淘宝网上购买设备的时候淘宝店主都认为RF射频技术不好应用在超市购物结算系统,原因 ...
- js实现的文章输入检查与测速。(纯js版本)
朋友又提出一些需求.希望不要jquery .于是修改成js版本. <!DOCTYPE html> <html> <head> <meta charset=&q ...
- OI队内测试——石门一
T1: 题目大意: 给你一个立方体,每个面上有些数字,给你一个数字K,你可以玩K轮游戏, 每轮你会将每个面上的数均分为4份,分给相邻的面,求K轮游戏后,上面的数字是 依次给你前.后.上.下.左.右的起 ...
- async & await 的用法
async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们 编程埋下了一些 ...
- IOS开发-UI学习-UINavigationController(导航控制器)的使用
UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" ...
- 为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义
为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 例子: 假设client发起连接的连接请求报文段在网络中没有丢失,而是在某个网络节点长时间滞留了,导致延迟到达ser ...
- CocoaPods 更新慢&swift版本适配
一.更新慢的问题 使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的 ...
- eclipse中集成svn maven开发手册---导入项目
一,导入项目 二,创建提分支 三,maven编译打包 四,合并主干 一,导入项目 右键,import,选择从svn检出项目 点击next,如图 如果是第一次导入,选择创建新的资源库,点击next,输入 ...