0

「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 は、cfgrid にバインドし、ページングなどを許可するために使用されます。完璧な世界では、この 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

4

2 に答える 2

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>
于 2012-08-22T00:01:04.817 に答える
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() />

ほんの少しのオプション。

于 2012-08-22T01:59:36.123 に答える