如何在两个ColdFusion CFC之间共享查询数据?

时间:2012-08-21 23:19:52

标签: coldfusion coldfusion-8 cfc

我正在创建一个名为“core_appdata”的CFC。此CFC将保存应用程序的核心存储过程。实施例....

    <cfcomponent displayname="core_appdata" hint="I Return Core App Data" output="no">
    <cffunction name="getprogram_list">

  <cfargument name="getstoredproc_input_campaignid" type="string" required="false">
   <cfargument name="getstoredproc_input_filtertestrecs" type="string" required="false">
    <cfargument name="getstoredproc_input_startdate" type="date" required="false">
    <cfargument name="getstoredproc_input_enddate" type="date" required="false">
    <cfargument name="getstoredproc_input_listtypeid" type="string" required="false">
    <cfargument name="getstoredproc_input_listid" type="string" required="false">
    <cfargument name="getstoredproc_input_appenvr" type="string" required="false">

    <cfset var rst_getprogram_list ="">
     ---  stored proc ---            
         <cfstoredproc procedure  = "p_adb_getprogram_list">
         </cfstoredproc>

    <cfreturn rst_getprogram_list />
   </cffunction>
    </cfcomponent> 

我还想创建一个名为“core_appdata_grids”的CFC。这个CFC将用于绑定到cfgrids并允许分页等。在一个完美的世界中,这个CFC将从上面的CFC“core_appdata”中的方法/函数“getprogram_list”获取其数据。实施例...

    <cfcomponent displayname="core_appdata_grids" hint="I Return Core App Data For CFGrids " output="no">

    <cffunction name="getprogram_list_grid">

               <cfargument name="page" required="no" />
        <cfargument name="pageSize" required="no" />
        <cfargument name="gridsortcolumn" required="no" />
        <cfargument name="gridsortdirection" required="no" />   
        <cfargument name="getstoredproc_input_campaignid" type="string" required="false">
               <cfargument name="getstoredproc_input_filtertestrecs" type="string" required="false">
               <cfargument name="getstoredproc_input_startdate" type="date" required="false">
               <cfargument name="getstoredproc_input_enddate" type="date" required="false">
               <cfargument name="getstoredproc_input_listtypeid" type="string" required="false">
               <cfargument name="getstoredproc_input_listid" type="string" required="false">
                <cfargument name="getstoredproc_input_appenvr" type="string" required="false">

        <cfset var rst_getprogram_list_grid ="">
         ---  get data ---           


        <cfreturn queryconvertforgrid(rst_getprogram_list_grid, page, pagesize) />
    </cffunction>

     </cfcomponent>

问题:

  • 这可能吗?如果是这样,它是如何完成的?
  • 如果是这样,这是使用CFC时的最佳做法吗?
  • 如果没有,在CFC之间共享数据的最佳方式是什么

提前感谢您抽出时间帮我解决这个问题。

OC

2 个答案:

答案 0 :(得分:2)

我看不到生成网格的cfc的名称,只是扩展了将继承所有方法的基础cfc。

<cfcomponent extends="core_appdata">

<cffunction name="getprogram_list_grid">
    <cfargument name="page" required="no" />
    <cfargument name="pageSize" required="no" />
    <cfargument name="gridsortcolumn" required="no" />
    <cfargument name="gridsortdirection" required="no" />   
    <cfargument name="getstoredproc_input_campaignid" type="string" required="false">
    <cfargument name="getstoredproc_input_filtertestrecs" type="string" required="false">
    <cfargument name="getstoredproc_input_startdate" type="date" required="false">
    <cfargument name="getstoredproc_input_enddate" type="date" required="false">
    <cfargument name="getstoredproc_input_listtypeid" type="string" required="false">
    <cfargument name="getstoredproc_input_listid" type="string" required="false">
    <cfargument name="getstoredproc_input_appenvr" type="string" required="false">

    <cfset var rst_getprogram_list_grid = super.getprogram_list() />

    <cfreturn queryconvertforgrid(rst_getprogram_list_grid, page, pagesize) />
</cffunction>

</cfcomponent>

答案 1 :(得分:1)

如果您不想扩展CFC,特别是如果您的模型不正确,则可以调用其他CFC:

<cfset var rst_getprogram_list_grid = createObject("component","core_appdata").getprogram_list() />

或者甚至更好地在它上面的所有地方设置:

<cfset request.core_appdata=createObject("component","core_appdata")>

然后在你的CFC中:

<cfset var rst_getprogram_list_grid = request.core_appdata.getprogram_list() />

只是几个选项。