我很好奇是否有办法强制ColdFusion标记将属性保存为默认属性,例如cfquery中的数据源。
例如,而不是写
<cfquery datasource="mydatasource">
我可以写
<cfquery>
并且系统自动知道数据源是&#34; mydatasource&#34;。
如果可能的话,真的很酷。答案 0 :(得分:6)
实际上数据源是可能的,但不是一切。
您可以在this.datasource="mydatasource"
Application.cfc
作为默认数据源
https://wikidocs.adobe.com/wiki/display/coldfusionen/Application+variables
答案 1 :(得分:1)
您问题的实际答案是custom tags
。您可以扩展ColdFusion标记的功能以满足您的需求。
以cfquery
标记为例,并在其周围包装自定义标记。将cfquery
参数所需的所有默认值提供到标记的默认属性中。
所以基本上你的自定义标签页就像是:
<cfif THISTAG.ExecutionMode EQ 'end'>
<cfparam name="Attributes.datasource" default="someDSN">
<cfparam name="Attributes.cacheWithin" default="#CreateTimeSpan(0,6,0,0)#">
<cfparam name="Attributes.maxRows" default="25">
<cfparam name="Attributes.timeOut" default="600">
<!--- some logic you want to perform --->
<cfquery datasource="#Attributes.datasource#"
cacheWithin="#Attributes.cacheWithin#"
maxRow="#Attributes.maxRows#"
timeOut="#Attributes.timeOut#"
<cfoutput>#THISTAG.GeneratedContent#</cfoutput>
</cfquery>
<!--- Caller assignment and other processing --->
</cfif>
现在您可以使用它并在您的项目中以您想要的方式重复使用它,甚至覆盖您希望与众不同的价值:
<cf_flexiquery>
<!--- you query here --->
</cf_flexiquery>
或
<cf_flexiquery maxRows="100" timeOut="1200">
<!--- you query here --->
</cf_flexiquery>
它让您对如何使用它有一个很好的了解。我扩展了自定义代码功能,以利用cfhttp
,cfpdf
,cffile
等功能。
这是您可以采用ColdFusion标签所需的灵活性的唯一方式,它可以很好地工作。