如何批量添加属性ColdFusion标记

时间:2015-07-21 18:38:13

标签: coldfusion coldfusion-9

我很好奇是否有办法强制ColdFusion标记将属性保存为默认属性,例如cfquery中的数据源。

例如,而不是写

   <cfquery datasource="mydatasource"> 

我可以写

   <cfquery> 

并且系统自动知道数据源是&#34; mydatasource&#34;。

如果可能的话,真的很酷。

2 个答案:

答案 0 :(得分:6)

实际上数据源是可能的,但不是一切。

您可以在this.datasource="mydatasource"

中设置Application.cfc作为默认数据源

https://wikidocs.adobe.com/wiki/display/coldfusionen/Application+variables

答案 1 :(得分:1)

您问题的实际答案是custom tags。您可以扩展ColdFusion标记的功能以满足您的需求。

cfquery标记为例,并在其周围包装自定义标记。将cfquery参数所需的所有默认值提供到标记的默认属性中。

所以基本上你的自定义标签页就像是:

flexiquery.cfm

<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>

它让您对如何使用它有一个很好的了解。我扩展了自定义代码功能,以利用cfhttpcfpdfcffile等功能。

这是您可以采用ColdFusion标签所需的灵活性的唯一方式,它可以很好地工作。