cfsetting 的 ColdFusion 9 脚本语法是啥?

Posted

技术标签:

【中文标题】cfsetting 的 ColdFusion 9 脚本语法是啥?【英文标题】:What's the ColdFusion 9 script syntax for cfsetting?cfsetting 的 ColdFusion 9 脚本语法是什么? 【发布时间】:2011-12-24 17:32:22 【问题描述】:

我正在尝试将 Application.cfc 转换为脚本。原来是这样的:

<cfcomponent displayname="Application" output="false">
     <cfset this.name               = "testing">
     <cfset this.applicationTimeout = createTimeSpan(0,1,0,0)>
     <cfset this.sessionManagement  = true>
     <cfset this.sessionTimeout     = createTimeSpan(0,0,30,0)>

     <cfsetting requesttimeout="20">
     ...

我不知道如何将cfsetting 标记转换为脚本。以下尝试无效:

setting requesttimeout="20"; // throws a "function keyword is missing in FUNCTION declaration." error.
setting( requesttimeout="20" ); // throws a "Variable SETTING is undefined." error.

看起来 Railo 可能支持它 (link),但我在 ColdFusion's documents 中找不到 cfsetting 标记的等效项

【问题讨论】:

在 CF9 中对你没有帮助,但是 CF10 在脚本中添加了原生 cfsetting。 【参考方案1】:

没有。通常我会建议为此提交ER,但已经有。我建议将其放入 CFM 文件并使用 include 将其引入。

【讨论】:

对错误报告进行投票是否有帮助,或者它是否已被接受并会在下一个版本中修复? 该错误已作为“已修复”关闭。 CF10 似乎有一个setting 等效标签。【参考方案2】:

试试这个

<cfscript>
createObject( "java", "coldfusion.tagext.lang.SettingTag" ).setRequestTimeout( javaCast( "double", 20 ) );
</cfscript>

或者这个

<cfscript>
createObject( "java", "coldfusion.runtime.RequestMonitor" ).overrideRequestTimeout( javaCast( "long", 20 ) );
</cfscript>

其中 20 是您的 cfsetting requesttimeout 值

【讨论】:

【参考方案3】:

在 CF11(我认为是 CF10)中,根据 docs 你可以这样做:

setting enablecfoutputonly="true" requesttimeout="180" showdebugoutput="no";

【讨论】:

问题是关于 CF9,但由于无论版本如何,这都是 Google 的***结果,我认为在此处包含并包含实际代码示例会很有用。【参考方案4】:

这些 cfml 脚本:

<cfsetting enablecfoutputonly="true" />
<cfsetting requesttimeout="60" />
<cfsetting showdebugoutput="false" />

应该在 cfscript 中这样工作:

createObject( "java", "coldfusion.tagext.lang.SettingTag" ).setEnablecfoutputonly(true);
createObject( "java", "coldfusion.tagext.lang.SettingTag" ).setRequestTimeout(javaCast( "double", 60 ));
createObject( "java", "coldfusion.tagext.lang.SettingTag" ).setShowdebugoutput(false);

【讨论】:

由于没有记录,我不建议在生产代码中使用它。 糟糕的文档并不是不使用软件内置功能的借口。唯一的区别是您只负责确保它们在未来的版本中仍然存在。无论如何,有很多记录在案的功能在较新的版本中被破坏了。因此,长话短说,确保您使用测试框架并信任您的测试,而不是不完整/不准确的文档。 【参考方案5】:
setting.requesttimeout="3000";

这应该可行

【讨论】:

以上是关于cfsetting 的 ColdFusion 9 脚本语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

冷融论的奇怪行为在外部功能中幸存?

JavaCast 浮点数大方

cfcomponent 中的 cfquery 未在 Coldfusion 9 中返回最新结果

在 ColdFusion 9 中使用 Flash 表单时出现 JavaScript 错误

Coldfusion 9中的清洁字符串/输入

找不到Coldfusion 9 Datasource