2016-06-15 46 views
0

我正在尝试在Lucee中创建全局函数。我遵循指示here,并让它“工作”。里面的Application.cfc的我把下面的代码:Lucee/Coldfusion中的全局函数

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

这似乎是工作在某些情况下正常,但如果我们需要在一个包含的Application.cfc子目录来访问该功能不具备的功能再 - 定义它会错误地说这个函数不存在。

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

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

我同意。在未来的其他地方我不会感到惊讶。

我喜欢Railo的方法是它是完全的沙箱。 主机A的标签&函数库永远不会与主机B的 库交叉/冲突,除非它们被放入全局服务器文件夹中。它也是虚拟文件系统的相同方式,几乎所有的东西都是 (数据源等)。

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

回答

3

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

Adob​​e ColdFusion不支持此AFAIK。所以你必须在这里存储你的函数在SERVER范围内。

+0

每当服务器重新启动时,WEB-INF目录是否会被覆盖? – Yamaha32088

+0

不,WEB-INF仅在Railo/Lucee服务开始时创建一次。该目录然后保存并存储设置。 – Alex

+0

真棒,我会给这个尝试谢谢! – Yamaha32088