【问题标题】:Global functions in Lucee/ColdfusionLucee/Coldfusion 中的全局函数
【发布时间】:2016-10-16 17:54:48
【问题描述】:

我正在尝试在 Lucee 中创建全局函数。我遵循了here 的指示并让它“有点”工作。在 Application.cfc 中,我放置了以下代码:

public void function onRequest() {
    URL.IsInternalUser = function() { return (SESSION.user.ID ?: 0); };
}

这在某些情况下似乎可以正常工作,但如果我们需要在包含未重新定义函数的 Application.cfc 的子目录中访问此函数,则会错误提示该函数不存在。

我要达到的最终目标是拥有一个包含多个用户定义函数的cfc 文件,然后让它们在整个应用程序中都可以访问,而无需一遍又一遍地重新定义。

有没有更好的方法来完成我们想要的?我问这个是因为在我之前在 cmets 部分引用的页面上有一个引用:

我同意。将来在其他地方看到它不会让我感到惊讶。

我喜欢 Railo 的 方法的地方在于它是完全沙盒化的。 主机 A 的标签和函数库永远不会与主机 B 交叉/冲突 库,除非它们被放入全局服务器文件夹中。这是 虚拟文件系统也一样,几乎所有东西 其他(数据源等)。

它特别提到 Railo 有一种创建 UDF 的方法,但我在任何地方都找不到任何关于此的文档。由于我们使用的是 Railo 的一个分支 Lucee,我认为它必须具有 Railo 用于创建 UDF 的功能。希望阅读本文的人可以帮助我并指出正确的方向。

【问题讨论】:

    标签: coldfusion railo lucee


    【解决方案1】:

    Railo/Lucee 支持自定义函数。您可以在网站的/WEB-INF/{railo|lucee}/library/function/ 中声明它们。将函数保存在.cfm 文件中,并将文件命名为与函数相同的名称。创建新功能后,服务器需要重新启动。 Here is Railo's blog post about it.

    Adobe ColdFusion 不支持此 AFAIK。因此,您必须在此处将函数存储在 SERVER 范围内。

    【讨论】:

    • 不会每次重启服务器都会覆盖WEB-INF目录吗?
    • 不,WEB-INF 只在 Railo/Lucee 服务启动时创建一次。然后保存该目录并存储设置。
    • 您不必为 Adob​​e Cold Fusion 在服务器范围内存储任何内容。您只需将 cfc 放在自定义标签的默认位置。
    • @DanBracuk 刚刚在 CF10 中测试过,但无法识别,在 cfcomponent/cfc 和 cfm 中都没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2015-10-31
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多