3

カスタムタグはマッピングで機能しますか? CustomTags フォルダーを相対アドレスとして指定する必要がないようにしています。

私はもう試した:

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

Application.cfc の内部

<cfimport prefix="tag" taglib="/CT">

私のページの中にありますが、そうではありません。

それは言います:

/CT で指定されたタグ ライブラリをインポートできません。次のエラーが発生しました: C:\Inetpub\wwwroot\CT。有効なタグ ライブラリを指定していることを確認してください。

4

5 に答える 5

2

Jayson の報告とは反対に、アプリケーションごとのマッピングと CFAdmin でグローバルに設定されたマッピングで、CFIMPORT が正常に動作しています。CFIMPORT は、マッピングに関してかなり不機嫌です (たとえば、相対パスに変数を使用したり、expandpath を使用したりすることはできません) - しかし、問題なく要求していることを実行できるはずです。

CFAdminで「アプリごとの設定を有効にする」にチェックを入れていますか?this.mappings を使用できるように設定しますか? 実行している CF のバージョンは何ですか? このコードで CF8 を使用していますが、問題はありません。

アプリケーション CFC (関数外だがコンポーネント内):

this.rootPath = getDirectoryFromPath(getCurrentTemplatePath());  // this assures path of application.cfc is used to determine path, likely equivalent to expandPath("/")
structInsert(this.mappings, '/vp', this.rootPath);

CFC の場合 (関数外でコンポーネント内):

<cfimport prefix="loader" taglib="/vp/view/_loader/">

その後、CFC で使用でき、期待どおりに動作します。

于 2009-07-30T18:24:01.157 に答える
1

確認しました...application.cfcの「this.mappings」構造を介して作成されたマッピングは使用できません。

Adobeのドキュメント(Coldfusion 9)から:

パスは、Webルート(および/で始まる)、現在のページの場所、またはAdministratorColdFusionマッピングページで指定されたディレクトリからの相対パスである必要があります。

CF9のCFImportドキュメント

application.cfcマッピングが、これ以外のほとんどすべてに対して機能する理由がわかりません。管理者での定義をできるだけ少なくするというアイデアが大好きだったので、ちょっとがっかりしました。アプリケーションを圧縮してどこにでもデプロイするのが好きです。

于 2010-04-02T15:30:31.223 に答える
1

cfimportタグでは何もできないと確信しています。相対パスを使用する必要があり、すべてのページに手動で含める必要があると思います。(vs.それをapplication.cfcファイルのどこかに置くか何か)

于 2009-06-24T14:50:06.213 に答える
1

私はexpandPathがCFマッピングを尊重していると確信しています。このようなことを試しましたか?

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

<cfimport prefix="tag" taglib="#expandPath('/CT')#">
于 2009-06-24T18:18:48.010 に答える
1

ドキュメントには、管理者のColdFusionマッピングページで指定されたディレクトリで動作すると書かれています。ColdFusion 管理者でマッピングを設定して、それが最初に機能するかどうかを確認しましたか? それが機能するが、application.cfc でアプリケーションごとに設定された this.mappings が機能しない場合、おそらくバグでしょうか?!?

編集: expandPath() 関数を使用するという Adam の提案をテストしましたが、taglib 属性には定数値が含まれている必要があるため、これも機能しません。変数または関数を含めることはできません。ColdFusion Administrator で設定されたマッピングを使用しない限り、機能しません。このapplication.cfcを使って以下のテストをしてみました。

<cfcomponent>

    <cfset this.name = "TestApp" />
    <cfset this.loginStorage = "session" />
    <cfset this.sessionManagement = true />
    <cfset this.setClientCookies = true />
    <cfset this.setDomainCookies = false />
    <cfset this.sessionTimeOut = CreateTimeSpan(0,12,0,0) />
    <cfset this.applicationTimeOut = CreateTimeSpan(1,0,0,0) />
    <cfset this.mappings['/CT'] = "C:\apache\htdocs\myProjects\Project1\CustomTags"/>

</cfcomponent>

そして、これは ColdFusion テンプレートで:

<cfimport prefix="tag" taglib="#expandpath('/CT')#">

エラーをスローします:

この式には定数値が必要です。

<cfset CT = expandpath('/CT')/>
<cfimport prefix="tag" taglib="#CT#">

エラーをスローします:

この式には定数値が必要です。

于 2009-06-24T16:23:29.993 に答える