我正在使用ColdFusion 11并找到了一篇文章,其中包含了我需要的一个非常好的例子。问题是我更好地使用cf标签而不是cfscript。
此代码在组件中使用cfscript。我的问题是我可以在cfc中使用cf标签,只使用cfclient,如示例所示,它将按预期工作吗?
http://blogs.coldfusion.com/post.cfm/cfinventory-mobile-application
答案 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>