通常你使用cfscript创建一个函数,如:
<cfscript>
function foo() { return "bar"; }
</cfscript>
Run Code Online (Sandbox Code Playgroud)
有没有办法将它声明为私有函数,只能用于同一个cfc中的其他方法?
我知道你可以用标签做到:
<cffunction name="foo" access="private">
<cfreturn "bar">
</cffunction>
Run Code Online (Sandbox Code Playgroud)
但我不想重写已经用cfscript编写的这个大函数.
我正在尝试在ColdFusion中创建一个java.awt.geom.Point2D.Double实例.
Point2D.Double是抽象类Point2D中的嵌套类.我试图使用以下方法实例化该类:
<cfset PointClass = createObject("java", "java.awt.geom.Point2D.Double")>
Run Code Online (Sandbox Code Playgroud)
这会失败,因为ColdFusion无法找到该类.
而且<cfset PointClass = createObject("java", "java.awt.geom.Point2D")>它不工作,因为的Point2D是一个抽象类,没有一个公共的构造上,你可以调用PointClass.init(x,y).
现在,我已经使用自己的Point类来包装Point2D.Double类,以便我可以在ColdFusion中实例化它.我不认为这是理想的,我正在寻找有关如何在ColdFusion中直接创建Point2D.Double类的想法.
我也在使用ColdFusion 8.
我正在尝试匹配这个我可以用alt-0146输入的字符.Word告诉我它是unicode 0x2019但我似乎无法在ColdFusion中使用正则表达式匹配它.这是我用来匹配2到10个字母和撇号以及这个字符的片段
[[:alpha:]'\x2019]{2,10}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有任何想法吗?
文档对此并不完全清楚 - 这些变量之间是否存在差异?在IIS上,至少它们看起来是相同的,但如果它在其他服务器下可能不同,我不想依赖它.
在JavaScript中,您可以这样做:
var a = null;
var b = "I'm a value";
var c = null;
var result = a || b || c;
Run Code Online (Sandbox Code Playgroud)
并且'result'将获得'b'的值,因为JavaScript会使'或'运算符短路.
我想在ColdFusion中使用一行成语,我能想到的最好的是:
<cfif LEN(c) GT 0><cfset result=c></cfif>
<cfif LEN(b) GT 0><cfset result=b></cfif>
<cfif LEN(a) GT 0><cfset result=a></cfif>
Run Code Online (Sandbox Code Playgroud)
任何人都可以比这更好吗?
我使用Java和WS-Security在我们的产品中公开了几个Web服务.我们的一位客户希望使用ColdFusion来使用Web服务.ColdFusion是否支持WS-Security?我可以通过编写Java客户端并在ColdFusion中使用它来解决它吗?
(我对ColdFusion不太了解).
我创建了一个utf8编码的RSS源,它提供从数据库中提取的新闻数据.我已经将我的数据库的所有方面都设置为utf8,并通过将其粘贴到记事本并保存为utf8来保存我作为utf8放入数据库的文本.因此,当RSS源呈现给浏览器时,所有内容都应该以utf8编码,但是我仍然得到英镑符号的奇怪问号字符:(
这是我的RSS提要代码(CFML):
<cfsilent>
<!--- Get News --->
<cfinvoke component="com.news" method="getAll" dsn="#Request.App.dsn#" returnvariable="news" />
</cfsilent>
<!--- If we have news items --->
cfif news.RecordCount GT 0>
<!--- Serve RSS content-type --->
<cfcontent type="application/rss+xml">
<!--- Output feed --->
<cfcontent reset="true"><?xml version="1.0" encoding="utf-8"?>
<cfoutput>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>News RSS Feed</title>
<link>#Application.siteRoot#</link>
<description>Welcome to the News RSS Feed</description>
<lastBuildDate>Wed, 19 Nov 2008 09:05:00 GMT</lastBuildDate>
<language>en-uk</language>
<atom:link href="#Application.siteRoot#news/rss/index.cfm" rel="self" type="application/rss+xml" />
<cfloop query="news">
<!--- Make data xml compliant --->
<cfscript>
news.headline = replace(news.headline, "<", …Run Code Online (Sandbox Code Playgroud) 我们一直在用ColdFusion和MySQL做一些测试,有点困惑.我们知道你可以在/etc/my.cnf文件中设置不同的'sql-mode'标志,这将导致MySQL以某种方式运行,具体取决于定义的模式.我们知道,每当使用'--sql-mode ='标志启动MySQL时,您也可以设置这些标志.
在/etc/my.cnf中,我们看到没有定义模式(一个被注释掉)所以我们添加了'sql-nodes =""'并重新启动了mysql(/etc/init.d/mysqld restart).每当我们转到MySQL命令行来查看设置的模式时,这是输出:
mysql> SELECT @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
mysql> SELECT @@SESSION.sql_mode;
+--------------------+
| @@SESSION.sql_mode |
+--------------------+
| |
+--------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
这告诉我没有模式,这就是我们想要的.但是,在ColdFusion 8中做同样的事情,我们看到以下内容:
SELECT @@GLOBAL.sql_mode;
[empty string]
SELECT @@SESSION.sql_mode;
STRICT_TRANS_TABLES
Run Code Online (Sandbox Code Playgroud)
这表明Global sql-mode为空,而Session sql-mode设置为' STRICT_TRANS_TABLES',这是我们不想要的.
现在,我可以在我们做任何其他事情之前将Session sql-mode设置为ColdFusion为空,这给了我想要的效果,但我真的不想去每个查询并添加它.
我(尝试)查看/etc/init.d/mysqld脚本,看看我是否能找到它将设置模式的位置,但没有看到任何内容.
你们对正在发生的事情有任何建议或想法吗?就好像ColdFusion将它设置在某个地方一样,但是ColdFusion Administrator中没有任何内容可以让我看到它会设置它.
WACK说:
如果您觉得需要大量参数,请考虑创建CT.
...
CT比自定义功能更强大,更灵活.尝试将UDF用于简单的事情...将CT和组件用于更多涉及的过程,尤其是那些您可以将其视为离散动作而非简单"按摩"的过程
好的,但你通常如何做决定?有兴趣了解现实生活中的实践和例子.
对我来说,当一个函数有许多不需要的参数时,就会发生这种情况,因此我必须将它们称为myFunc(arg1 ="foo",arg2 ="bar").有时<cfmodule>语法变得更易读,但并非总是如此.
其他原因是我不喜欢长(例如,超过2个代码屏幕)UDF.
但所有这些想法都是非常主观的,这就是为什么我有兴趣阅读其他人的意见.也许有更好的规则?
提前致谢.
我有一个SQL数据库,ntext其中包含一个保存页面内容的字段.
我正在使用ColdFusion查询信息并将其传递给表单.
该表格利用ckeditor用于该特定字段,该字段目前包含大约4000个字符.在ckeditor窗口中查看时,似乎缺少一些文本.
但是,当我查看数据库数据时,文本根本没有被截断; 它完好无损.
我认为这可能是ckeditor的字符限制,所以我将其关闭并通过textarea框查看数据,但文本仍然缺失.
查询是一个组件中保存的简单选择查询,没什么特别之处:
<cfquery name="getDrilledContent" datasource="#application.dsn#">
SELECT co.uid_content, co.txt_contentgroup, co.txt_contentRefID, co.uid_contentuser, co.txt_contentvalue, co.dte_contentdate, co.txt_contentpagename,
co.txt_metatitle, co.txt_metadescrip, co.txt_metakeywords, co.txt_metaurl, co.bit_primary, co.txt_h1, co.txt_contenturl, co.txt_contentlink,
us.txt_du_firstname, us.txt_du_surname, txt_du_email, dte_edited, uid_changedby
FROM tbl_content co
INNER JOIN tbl_datausers us ON co.uid_contentuser=us.uid_datauser
WHERE uid_contentwebid = <cfqueryparam cfsqltype="cf_sql_integer" value="#session.webid#">
<cfif Isdefined('arguments.uid_content') AND arguments.uid_content NEQ "">
AND co.uid_content=<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.uid_content#"></cfif>
</cfquery>
Run Code Online (Sandbox Code Playgroud)
为什么这个查询不会将所有数据都拉下来?
coldfusion ×10
coldfusion-8 ×2
custom-tag ×1
idioms ×1
iis ×1
java ×1
mysql ×1
openbd ×1
railo ×1
regex ×1
rss ×1
sql ×1
unicode ×1
utf-8 ×1
web-services ×1
ws-security ×1