可以使用CF标签编写ColdFusion CFScript代码吗?

时间:2017-02-28 00:01:18

标签: coldfusion coldfusion-11

我正在使用ColdFusion 11并找到了一篇文章,其中包含了我需要的一个非常好的例子。问题是我更好地使用cf标签而不是cfscript。

此代码在组件中使用cfscript。我的问题是我可以在cfc中使用cf标签,只使用cfclient,如示例所示,它将按预期工作吗?

http://blogs.coldfusion.com/post.cfm/cfinventory-mobile-application

2 个答案:

答案 0 :(得分:0)

是的,它会起作用。

所以,例如

component client="true" output="false" {    
    public function getStatus(id)
       {
          q = queryExecute("select * FROM status where id = '#id#'", 
                null, {"datasource"="cfds"});       
          return q;
        }   
    public function getStatusByType(type)
        {
        // always include type 0 status as they are global
        q = queryExecute("select * from status where type = '#type#' 
               or type = 0", null, {"datasource"="cfds"});       
               return q;
        }
}

将是

<cfcomponent>
    <cffunction name="getStatus">
         <cfargument name="id">
         <cfquery name="q" datasource="cfds>
             select * FROM status where id = '#id#'
         </cfquery>
         <cfreturn q>
    </cffunction>
    <cffunction name="getStatusByType">
        <cfargument name="id" datasource="cfds>
         <cfquery name="q" datasource="cfds">
             select * from status where type = '#type#' 
           or type = 0
         </cfquery>
         <cfreturn q>
    </cffunction>
</cfcomponent>

我要改进上面代码的一件事是使用cfqueryparam。以防万一。

答案 1 :(得分:0)

扩展Jacks回答......

在ColdFusion中,您有以下CFC选项,1)仅限cfscript,2)仅标记和3)带有cfscript块的标记

<强>脚本

这适用于ColdFusion的新版本,适用于控制器和模型。这种类型的代码对于与Java和C#开发人员的协作也很有用,因为它们看起来很熟悉。

请注意,<cfscript>未出现在代码中。 ColdFusion刚刚发现这是一个纯<cfscript>文件。

component client="true" output="false" {    
public function getStatus(id)
   {
      q = queryExecute("select * FROM status where id = '#id#'", 
            null, {"datasource"="cfds"});       
      return q;
    }   
public function getStatusByType(type)
    {
    // always include type 0 status as they are global
    q = queryExecute("select * from status where type = '#type#' 
           or type = 0", null, {"datasource"="cfds"});       
           return q;
    }
}

<强>代码 这适用于较旧版本的ColdFusion,并且最常见。

<cfcomponent>
<cffunction name="getStatus">
     <cfargument name="id">
     <cfquery name="q" datasource="cfds>
         select * FROM status where id = '#id#'
     </cfquery>
     <cfreturn q>
</cffunction>
<cffunction name="getStatusByType">
    <cfargument name="id" datasource="cfds>
     <cfquery name="q" datasource="cfds">
         select * from status where type = '#type#' 
       or type = 0
     </cfquery>
     <cfreturn q>
</cffunction>
</cfcomponent>

带脚本的标签

在旧版本的ColdFusion中,并非所有标签都具有等效的脚本。出于这个原因,我们经常不得不切换进出<cfscript>模式。这种方法的一个很好的部分是代码可以根据需要进行转换。

<cfcomponent>
<cffunction name="getStatus">
     <cfargument name="id">
     <cfquery name="q" datasource="cfds>
         select * FROM status where id = '#id#'
     </cfquery>
     <cfreturn q>
</cffunction>

<cfscript>
public function getStatusByType(type)
    {
    // always include type 0 status as they are global
    q = queryExecute("select * from status where type = '#type#' 
           or type = 0", null, {"datasource"="cfds"});       
           return q;
    }
</cfscript>
</cfcomponent>