自定義標簽具有一般coldfuion標簽一樣的性質。他們可以完成下面的任務:
- 帶差數。
- 可以有標簽主體,開始和結束標簽。
- 當遇到開始標簽的時候時候 coldfusion可進行特定的操作。
- 如果有結束標簽,Coldfuion又可以進行不同的操作,該操作可以是和僅有開始標簽進行的操作不同。
- 在自定義標簽里面可以包含任何coldfusion頁面里合法的元素,包括Coldfusion內建標簽,自定義標簽,甚至JSP標簽或者Javascript代碼。
- 允許遞歸調用,就是說,如果設計恰當,一個自定義標簽內部可以調用本身。
- 通過全局變量向調用頁面返回結果,但是自定義標簽不能象函數那樣直接返回結果。
雖然自定義標簽和被 cfincluede標簽引用的頁面都是coldfuion頁面,但是coldfuion對他們的處理方式是不同的。 當頁面調用一個自定義標簽,該頁面的代碼將暫時停止執行知道自定義標簽內的代碼全部被執行完。 當自定義標簽的代碼執行完畢,將返回到調用該標簽的頁面,繼續執行該頁面的代碼。 下面的圖例示范了這一過程。 箭頭表示coldfuion對頁面執行的流程。

4.1、調用自定義cfml標簽
不像內建標簽,你可以通過下面三種方法調用自定義的cfml標簽:
- 直接調用。
- 使用cfmodule標簽調用。
- 使用cfimport標簽調用標簽庫目錄。
直接調用一個cfml自定義標簽,只需要把改標簽所在的cfm文件的文件名去掉.cfm的擴展名,在前面加上cf_前綴,然后放到尖括號<>里就行了。 比如說,如果用來存放自定義標簽代碼的文件名是mytag.cfm,我們可以用下面的方式來直接調用該標簽:
<cf_myTag>
同時只要給標簽加上斜杠(/),就可以構成一個結束的標簽:
</cf_myTag>
§標記 §描述
【A】
<CFABORT> 立即停止對一個ClodFusion模板的處理
<CFAPPLET> 以<CFFORM>格式嵌入用戶提供的JAVA小程序
<CFAPPLICATION> 定義一個應用程序的作用域,并指定一些應用程序配置
<CFASSOCIATE> 將子標記(subtags或child tags)與基礎標記關聯
<CFAUTHENTICATE> 在安全語境中驗證用戶,為應用程序定義一個安全的語境
【B】
<CFBREAK> 打斷循環進程,與<CFABORT>不同,不阻止ClodFusion處理
【C】
<CFCACHE> 改進頁面的執行,在頁面中,每次頁面中,每次頁面要求時都不需要動態創建內容,相反,ClodFusion會返回在先前的過程中創建的靜態HTML輸出
<CFCASE> 在<CFSWITCH>塊內指定case語句
<CFCHTCH> 在<CFTRY>塊中創建捕捉塊來捕捉錯誤
<CFCOL> 在<CFTABLE>HTML表中指定列
<CFCOLLECTION> 程序化地創建和管理Verity集合
<CFCONTENT> 設置MIN類型,以便能將非HTML格式的文檔發送至客戶瀏覽器
<CFCOOKIE> 在客戶瀏覽器上設置cookie和持久的客戶端變量
【D】
<CFDEFAULTCASE> 在<CFSWITCH>塊內制定默認的case語句
<CFDIRECTORY> 獲取目錄列表并處理目錄
<CFDUMP> 輸出簡單變量、查詢、結構、數組和用來調試的序列化WDDX包的內容
【E】
<CFELSE> <CFIF>語句的else部分
<CFELSEIF> <CFIF>語句的else if部分
<CFERROR> 覆蓋標準的ClodFusion錯誤消息,并用指定的特殊錯誤處理模板來替換它
<CFEXECUTE> 在ClodFusion服務器機器上執行處理
<CFEXIT> 終止自定義標記的處理,而不終止調用模板的處理
【F】
<CFFILE> 執行文件管理操作,包含在瀏覽器中上載文件;移動、重命名、復制和刪除文件;以及讀寫文件
<CFFLUSH> 清空ClodFusion的輸出緩沖,將內容發送回Web瀏覽器
<CFFORM> 能夠使用其他標記(<CFGRID>、<CFINPUT>、<CFSelect>、<CFTEXTINPUT>、<CFSLIDER>、<CFTREE>或使用<CFAPPLET>的任何Java applet)
<CFFTP> FTP界面――internet標準文件傳輸協議
【G】
<CFGRAPH> 動態創建基于Web的數據驅動圖表
<CFGRAPHDATA> 提供<CFGRAPH>的數據點
<CFGRID> 創建Java applet數據表格
<CFGRIDCOLUMN> 明確指定<CFGRID>列
<CFGRIDROW> 指定<CFGRID>數據行
<CFGRIDUpdate> 編輯模式下的<CFGRID>后端支持
【H】
<CFHEADER> 控制特定HTTP標題的內容
<CFHTMLHEAD> 在Web頁中的標題部分編寫文字
<CFHTTP> HTTP界面――Internet標準超文本傳輸協議
<CFHTTPPARAM> 將參數傳遞給<CFHTTP>請求
【I】
<CFIF> 執行條件處理
<CFIMPERSONATE> 扮演在安全場景中的另一個用戶
<CFINCLUDE> 包含處理過的另一個模板中的內容
<CFINDEX> 用索引數據填充Verity集合
<CFINPUT> 以HTML的格式嵌入JavaScript客戶端驗證代碼
<CFInsert> 在數據庫表中添加單行
【L】
<CFLDAP> 與LDAP服務器交互
<CFLOCATION> 將瀏覽器重新定向到其他的URL上
<CFLOCK> 將互斥或只讀鎖定放置在一段代碼周圍
<CFLOG> 生成用戶自定義的日志文件
CFLOOP> 實現程序化的循環
【M】
<CFMAIL> 從ColdFusion模板內生成SMTP郵件
<CFMAILPARAM> 指定<CFMAIL>標題或提供文件附件
<CFMODULE> 明確執行自定義標記,聲明其詳盡或相對的路徑
【O】
<CFOBJECT> 在ColdFusion應用程序內使用COM。Java和CORBA對象
<CFOUTPUT> 輸出<CFQUERY>的結果和隨時的文本,包括將要擴展的變量
【P】
<CFPARAM> 指定參數的默認值和所需的標記參數
<CFPOP> 在POP3郵箱中獲取和處理郵件
<CFPROCESSINGDIRECTIVE> 在起始和結束標記之間壓縮空白
<CFPROCPARAM> 將參數傳遞到調用的<CFSTOREDPROC>存儲過程中,并從該過程中獲取參數
<CFPROCRESULT> 指定結果設置來獲取調用的,CFSTOREDPROC>存儲過程
【Q】
<CFQUERY> 將SQL語句提交給數據源或其他查詢,該數據源或者是先前配置好的,或者是動態生成的
<CFQUERYPARAM> 定義<CFQUERY>查詢參數和它們的數據類型
【R】
<CFREGISTRY> 直接處理系統Registry
<CFREPORT> 用Crystal Reports Prefessional報表生成程序創建的報告界面
<CFRETHROW> 在<CFCATCH>塊內迫使當前錯誤再次被調用
【S】
<CFSAVECONTENT> 在變量中保存頁面的輸出或頁面的部分
<CFSCHEDULE> 程序化地創建、更新、刪除和執行ClodFusion Administrator調度程序中的任務
<CFSCRIPT> 標記ColdFusion腳本塊
<CFSEARCH> 執行對Verity集合的搜索(與<CFQUERY>對ODBC數據源執行搜索的方法大致相同)
<CFSelect> 簡化創建數據驅動<Select>表單控件的過程
<CFSERVLET> 執行在JRun服務器上運行的Java Servlet
<CFSERVLETPARAM> 通過值或引用將參數傳遞到在JRun服務器上運行的Java Servlet所調用的<CFSERVLET>
<CFSET> 為變量分配一個值
<CFSETTING> 控制頁面處理的各個方面,例如在頁面中控制HTML代碼的輸出,或者啟用和禁用調試輸出
<CFSILENT> 壓縮生成的輸出
<CFSLIDER> 創建一個Java applet slider控件
<CFSTOREDPROC> 調用SQL存儲工程
<CFSWITCH> 創建ColdFusion開關語句
【T】
<CFTABLE> 自動創建一個完整的數據驅動型HTML<TABLE>
<CFTEXTINPUT> 創建一個Java applet文字輸入控件
<CFTHROW> 在<CFTRY>塊中強制一個錯誤條件
<CFTRANSACTION> 將多個<CFQUERY>用在一個事務處理中
<CFTREE> 創建Java applet樹控件
<CFTREEITEM> 為<CFTREE>樹控件指定樹元素
<CFTRY> 捕捉由ColdFusion或明確帶有<CFTHROW>或<CFRETHROW>的異常
【U】
<CFUpdate> 更新數據庫表中的單行
【W】
<CFWDDX> 將ColdFusion數據結構序列化和菲序列化化為基于XML的WDDX格式
在我們對數據進行添加修改操作的時候,我們經常會用到form提交框,有的時候我們會習慣將提交框利用action屬性提交到一個固定的頁面進行腳本操作,而有些情況我們又希望在提交框頁面直接執行操作腳本。這就涉及到一個問題,我們什么時候才能夠確認操作人員進行了信息提交呢?以下我們例舉幾種方式大家可以參考。
由于form的提交方式有兩種,即method為post或get,我們需要針對這兩種情況進行不同的處理。
針對Post情況:
<cfif StructKeyExists(form, "submit")>
Form_StructKeyExists:Yes
<cfelse>
Form_StructKeyExists:No
</cfif>
<br>
<cfif ParameterExists(form.submit)>
Form_ParameterExists:Yes
<cfelse>
Form_ParameterExists:No
</cfif>
<br>
<cfif isDefined("form.submit")>
Form_isDefined:Yes
<cfelse>
Form_isDefined:No
</cfif>
<form method="post">
<input type="submit" name="submit" value="submit">
</form>
針對Get情況:
<cfif StructKeyExists(URL,"submit")>
URL_StructKeyExists:Yes
<cfelse>
URL_StructKeyExists:No
</cfif>
<br />
<cfif ParameterExists(URL.submit)>
URL_ParameterExists:Yes
<cfelse>
URL_ParameterExists:No
</cfif>
<br>
<cfif isDefined("URL.submit")>
URL_isDefined:Yes
<cfelse>
URL_isDefined:No
</cfif>
<form method="get">
<input type="submit" name="submit" value="submit">
</form>