1

私は使用してColdfusion8いて、コンポーネントを呼び出そうとしています。これは数日前まで機能していました。何も変更したことを思い出せませんが、このコンポーネントへの呼び出しはすべて失敗しました。

ここにコード:

<cfinvoke component="form_mailer_user" method="msg_contact">
     <cfinvokeargument name="userData" value="#Local.User#"/>
</cfinvoke>  

おそらく構造体を引数に渡すことを除いて、特別なことは何もありません。

次のエラーが表示されます。

 Could not find the ColdFusion Component or Interface form_mailer_user. 
 Ensure that the name is correct and that the component or interface exists

それは問題なく存在します...では、アクセスするにはどうすればよいですか?

手伝ってくれてありがとう!

編集:
両方のファイルは、という同じフォルダーにありますservices。このフォルダーのマッピングが私のapplication.cfc

THIS.mappings["/services"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "services";

しかし、次のようにコンポーネントを呼び出そうとしています:

services.form_mailer_user
services.form_mailer_user.cfc

も機能しません。

編集:
私のapplication.cfc

<cfcomponent displayname="Application" output="false" hint="Application handler">   
    <cfscript>
        THIS.name = "abc";
        THIS.sessionManagement = "true";        
        THIS.sessionTimeout = createTimeSpan(0,2,0,0);
        THIS.s3.acceesKeyid = "___";
        THIS.s3.awsSecretKey = "___";
        // mappings
        THIS.mapping = {};
        THIS.mappings["/controllers"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "controllers";
        THIS.mappings["/services"] = GetDirectoryFromPath( GetCurrentTemplatePath() ) & "services";
    </cfscript>

    <cffunction name="onApplicationStart" returnType="boolean" output="false" hint="">
        <cfscript>
            Application.strConfig = structNew();
            Application.strConfig.datasource = "___";
            Application.strConfig.rootDir = "test/members/";
            Application.strConfig.emailErrorMessaging = "on";
        // pre
            Session.activeSession = "No";
            Session.activeLog = "No";
        </cfscript>
        <cfreturn true />
    </cffunction>

    <cffunction name="onSessionStart" returnType="boolean" output="false" hint="session initalizer">
        <cfscript>
            var Local = {};
            Local.cfid = Session.cfid;
            Local.cftoken = Session.cftoken;
            StructClear( SESSION );
        </cfscript>

        <!---SESSION  --->
        <cfparam name="Session.log" default="">
        <cfparam name="Session.activeLog" default="No">
        <cfscript>
            Session.cfid = Local.cfid;
            Session.cftoken = Local.cftoken;
            Session.activeSession = "Yes";              
            Session.datasource = Application.strConfig.datasource;
            Session.testpath = "tes/";
            Session.tpu = "../";
            Session.bucketPath = "http://s3.amazonaws.com/";
            Session.bucketName = "___";
        </cfscript> 
        <cfreturn true />
    </cffunction>

    <cffunction name="onRequestStart" returnType="boolean" output="false" hint="Pre page processing!">         
        <cfscript>
            var LOCAL = {};             
        </cfscript> 
        <!--- DEBUG --->
        <!---
            <cfif structKeyExists(url,'reset')>
                <cfcache action="flush">
                <cfset OnApplicationStart() />
                <cfset THIS.OnSessionStart() />
            </cfif>
            --->
            <cfif len( Session.errMsgs ) EQ 0> 
                <cfinvoke component="services.errorMsg" method="createErrMsgsLog" returnvariable="errMsgs"></cfinvoke>
                <cfset Session.errMsgs = errMsgs> 
            </cfif> 
        <cfreturn true />
    </cffunction>
    <!--- custom functions --->
<cfinclude template="templates/tmp_functions.cfm">
</cfcomponent>

編集
私は近づいていると思います。私は別のメーラー(同じフォルダー)を持っていますが、これを交換して私の

 <cfinvoke component="form_mailer_other" method="msg_contact">
     <cfinvokeargument name="userData" value="#Local.User#"/>
</cfinvoke>

Coldfusion はメソッドを見つけることができませんが、これは cfc を見つけたことを意味します。それは私の mailer.cfc 内のエラーでしょうか?

解決策:
言うのが怖いです...

_mailer_userからのファイル名にタイプミスがあります...助けてくれてありがとう!

4

2 に答える 2

3

CFC と CFM ファイルが同じディレクトリにない場合は、CFC が配置されているディレクトリ名をドットで追加する必要があります。下記参照。(directory.form_mailer_user)

于 2012-08-19T22:11:51.213 に答える
1

次のように、「見る」ことができないメソッドの定義に属性access="public"を追加します。

<cffunction name="onRequestStart" access="public" returnType="boolean" output="false" hint="Pre page processing!"> ...
于 2013-03-10T19:04:35.547 に答える