上一篇介紹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或者表達式。
代碼舉例:
1 <apex:page > 2 <apex:pageBlock title="日期相關函數匯總"> 3 當前的時間為: 4 <apex:outputText value="{0,date,YYYY-MM-dd HH:mm:ss}"> 5 <apex:param value="{!now()}" /> 6 </apex:outputText> 7 <br /> 8 當前的日期為: 9 <apex:outputText value="{!TODAY()}"></apex:outputText> 10 <br /> 11 當前的日期(格式轉換)為: 12 <apex:outputText value="{0,date,YYYY-MM-dd}"> 13 <apex:param value="{!TODAY()}" /> 14 </apex:outputText> 15 <br /> 16 當前日期的年: 17 <apex:outputText value="{!year(today())}"></apex:outputText> 18 <br /> 19 當前日期的月: 20 <apex:outputText value="{!month(today())}"></apex:outputText> 21 <br /> 22 當前日期的日: 23 <apex:outputText value="{!day(today())}"></apex:outputText> 24 <br /> 25 自定義年月日設置日期: 26 <apex:outputText value="{!date(2017,2,13)}"></apex:outputText> 27 <br /> 28 使用datevalue函數顯示日期(參數為date/time類型): 29 <apex:outputText value="{!datevalue(now())}"></apex:outputText> 30 <br /> 31 使用datevalue函數顯示日期(參數為文本類型): 32 <apex:outputText value="{!datevalue('2017-02-13')}"></apex:outputText> 33 <br /> 34 使用DATETIMEVALUE函數返回一個日期+GMT時間的值,傳遞的參數可以為date/time類型也可以為字符串: 35 <apex:outputText value="{!datetimevalue('2017-02-13 11:00:00')}"></apex:outputText> 36 </apex:pageBlock> 37 </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頁的業務邏輯處理
1 public with sharing class LogicalRelatedFunctionController { 2 public String testNumber{ 3 get{ 4 return '123'; 5 } 6 7 } 8 9 public Integer comparedValue{ 10 get{ 11 return 1; 12 } 13 } 14 }
2.LogicalRelatedFunctionPage:函數應用
1 <apex:page controller="LogicalRelatedFunctionController"> 2 <apex:pageBlock title="isnumber函數用法"> 3 testNumber是否為數字:<apex:outputText value="{!ISNUMBER(testNumber)}"></apex:outputText> 4 </apex:pageBlock> 5 <apex:pageBlock title="and函數用法"> 6 <apex:outputText value="只有testNumber是數字並且comparedValue大於0才會顯示此段內容" 7 rendered="{!AND(isnumber(testNumber),comparedValue>0)}"> 8 </apex:outputText> 9 </apex:pageBlock> 10 <apex:pageBlock title="case函數用法"> 11 {!CASE(comparedValue,0,'value is 0',1,'value is 1','value is other')} 12 </apex:pageBlock> 13 <apex:pageBlock title="IF函數用法"> 14 <apex:outputText value="text value" style="{!IF(comparedValue>0,'color:red;','')}"> 15 </apex:outputText> 16 </apex:pageBlock> 17 </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頁邏輯處理
1 public with sharing class TextRelatedFunctionController { 2 public String testVariable{get{ 3 return 'test value'; 4 }} 5 6 public String testTrimVariable{get{ 7 return ' test value '; 8 }} 9 10 public String testToNumberVariable {get{ 11 return '123'; 12 }} 13 }
2.TextRelatedFunctionPage:部分函數使用舉例
1 <apex:page controller="TextRelatedFunctionController"> 2 testVariable對象的值為:{!testVariable} 3 <apex:pageBlock title="BEGINS函數用法"> 4 testVariable對象值是否以test字符開始 : {!BEGINS(testVariable,'test')} 5 </apex:pageBlock> 6 <apex:pageBlock title="CONTAINS函數用法"> 7 testVariable對象值是否包含test字符 : {!CONTAINS(testVariable,'test')} 8 </apex:pageBlock> 9 10 <apex:pageBlock title="FIND函數用法"> 11 testVariable對象中lue所在的位置:{!FIND('lue',testVariable)} 12 </apex:pageBlock> 13 <apex:pageBlock title="LEN函數用法"> 14 testTrimVariable對象值的長度為: {!LEN(testTrimVariable)} 15 </apex:pageBlock> 16 <apex:pageBlock title="TRIM函數用法"> 17 testTrimVariable對象trim以后長度為:{!LEN(TRIM(testTrimVariable))} 18 </apex:pageBlock> 19 <apex:pageBlock title="VALUE函數用法"> 20 <apex:outputText value="{!IF(VALUE(testToNumberVariable) > 100,'testToNumberVariable轉換成number大於100','testToNumberVariable轉換成number小於100')}"> 21 </apex:outputText> 22 </apex:pageBlock> 23 </apex:page>
運行效果:
總結:此篇只是講解一些簡單常用的函數的用法,還有一些其他的比如Math相關的,Encoding相關的等函數沒有列出,如果VF頁需要使用到相關函數時,請參考page的PDF,此片僅起到拋磚引玉作用。篇中描述有錯誤的地方歡迎指出,有不懂得歡迎留言。