2

タイトルの通り - ColdFusion の残りのコンポーネントはApplicationスコープにアクセスできますか? 私の最初のテストでは、それができないことを示しているようですが、Railo/Lucee では間違いなく可能です。

確かに、CFC はカプセル化を破るためにスコープにアクセスすべきではないと主張できますがApplication、REST コンポーネントは、これが望ましい数少ないインスタンスの 1 つだと思います。

奇妙に思えるのは、Application存在しないスコープ変数を返そうとすると、期待どおりのメッセージが表示されることです。

Element FOO is undefined in APPLICATION.

一方、存在Applicationするスコープ付き変数を返そうとすると、次のようになります-このコンテキストではスコープが使用できないことを示唆しています:Application

Variable APPLICATION is undefined.

この時点で、質問はかなり無意味です.CFのREST実装は非常に面倒なので、私はTaffyに移行しようとしていると思います.しかし、Railo/Luceeのものは比較するとうまく機能します.何かを台無しにしました。

興味のある方のために、いくつかのテストコードを次に示します。

<cfcomponent
    output      = "false"
    rest        = "true"
    restpath    = "/hello/"
    >

    <cffunction
        name            = "world"
        returntype      = "string"
        httpmethod      = "GET"
        access          = "remote" 
        >

        <cfreturn Application.Foo />

    </cffunction>   

</cfcomponent>
4

1 に答える 1

0

コメントから昇格

Element FOO is undefined in APPLICATIONエラーメッセージは赤いニシンだと思います。などの未定義の構造体変数を呼び出すとfoo.bar、エラー メッセージが表示されますElement BAR is undefined in FOO。あなたの場合、それは Application スコープのように見えますが、実際にはそうではないと思います。

Application.cfc ファイルに関連して (パス内の) cfc はどこにありますか? ColdFusion は、呼び出されたテンプレートと同じフォルダーで Application.cfc ファイルを検索し、見つからない場合は、ディレクトリ ツリーの検索を開始することに注意してください。CFC が Application.cfc ファイルの階層内にない場合、ColdFusion が認識するようにそのアプリケーションの一部にはなりません。Charlie Arehart からのこの機能に関する詳細情報を次に示します。

名前のないアプリケーションを使用する可能性もあります。その機能に関するドキュメントを次に示します。ただし、この場合にうまくいくかどうかはわかりません。

于 2015-10-13T13:42:59.603 に答える