我有一个相当长的 cfc 文件,大约 1800 行,在 ColdFusion 8 中运行良好,但是在将我的开发系统升级到 ColdFusion 9 并进行一些测试后,我收到了 cfc 的编译错误,消息显示“分支目标偏移量也是如此大为短”。我修改了文件以消除一些未使用的功能并合并一个以使其更短,这解决了问题以使其正常工作。但是,为什么现在我升级到 CF9 时它就死在我身上了?还有其他人在以前或当前版本的 ColdFusion 中遇到过这个问题吗?除了升级jvm等修改cfc文件还有其他解决办法吗?
编辑 如果你有我的问题的答案,太好了!发布那个,但不要浪费时间告诉我一些我已经知道的事情。如果您要发布回复,请仔细阅读问题并仅在您知道答案时才回答。不要进行谷歌搜索并发布我已经知道并用来使代码工作的废话。问题是,为什么它在 CF8 中有效,而现在在 CF9 中无效?除了我所做的,还有其他解决方案吗?
我有以下两种CFC:
component extends="Controller" displayName="foo" {
public void function minifoo() {
}
}
component extends="Foo" displayName="bar" {
public void function minibar() {
}
}
Run Code Online (Sandbox Code Playgroud)
我知道Foo.cfc中的任何函数都可供Bar.cfc使用.但似乎反过来并非如此.我可以在Bar.cfc中使用Foo.cfc中的函数吗?或者继承只能以一种方式工作?
我不是一个coldfusion程序员,但我发现CFC文件中有一行需要更改.我需要帮助确定调整此文件的确切步骤,该文件已关闭C:\ ColdFusion8\wwwroot\cfm,保存并重新编译和部署.有人能告诉我确切的步骤.我只需要将一个变量从单数变为复数.我该如何重新编译并重新运行一切?谢谢
我有一个CFC,可以在工作发布网站上处理"与我们联系"的表格.cfc旨在处理网站上的几种不同形式; 一个通用的"联系我们"表格和另一个"我对这份工作感兴趣"表格.
当CFC获取数据,并且作业发布的ID#在参数中时,CFC执行快速查询并获取作业发布信息,将其包含在电子邮件中并向HR部门和用户发送电子邮件职位发布信息以及用户的联系信息.
如果未检测到ID,则CFC仅通过电子邮件向用户发送确认电子邮件,并将联系信息发送给HR部门.
处理通用(非ID)表单时,一切正常.但是,当需要处理包含快速查询的表单时,我收到一个错误:
Communications link failure The last packet successfully received from the server was 61,380 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
为什么填充我的页面的查询工作正常,但是这个CFC会在其中引发查询错误?
我们在共享托管环境中运行带有MYSQL的CF9.
CFC ......
<cfif len(local.data.job_id)>
<cftry>
<cfquery name="qJobsforEmail" datasource="#application.datasource#" username="#application.username#" password="#application.password#">
SELECT * FROM #local.data.table# WHERE #local.data.table#.#local.data.column#= <cfqueryparam value="#local.data.job_id#" cfsqltype="cf_sql_numeric">
</cfquery>
<cfcatch type="any">
<cfmail to="my@email.com" from="server@host.com" subject="Error processing query" type="html">
<h3>There was an error processing the query</h3>
<p><cfoutput>#cfcatch.Detail#</cfoutput></p>
<p><cfoutput>#cfcatch.NativeErrorCode#</cfoutput></p>
<p><cfoutput>#cfcatch.SQLState#</cfoutput></p>
<p><cfoutput>#cfcatch.Sql#</cfoutput></p>
<p><cfoutput>#cfcatch.queryError#</cfoutput></p>
<p><cfoutput>#cfcatch.where#</cfoutput></p>
<p><cfoutput>#cfcatch.type#</cfoutput></p>
<cfdump var="#local#">
</cfmail> …Run Code Online (Sandbox Code Playgroud) 当我在ColdFusion 8中编写cfc时,在源代码中ColdFusion会显示以下注释:
<!-- application.cfm BEGIN -->
..
<!-- app_include.cfm BEGIN -->
..
<!-- app_include.cfm END --> <!-- BEGIN variableDeclarations.cfm -->
...
<!-- END variableDeclarations.cfm OR #request.directory# contains "storeworks"-->
...
<!-- application.cfm END -->
Run Code Online (Sandbox Code Playgroud)
但我没有写任何东西,只有一个功能:
<cfcomponent Hint = "Test" displayname="Test" output="true">
<cffunction name="GetProducts" returnformat="json" output="false" access="remote">
<cfquery name="getMenu" dbtype="query" datasource="#request.dsn#">
select * from Grades ORDER BY gradeID ASC
</cfquery>
<cfreturn getMenu />
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
如何删除评论,或者如何不显示评论?
我正在使用Ryan J. Heldt的验证CFC http://validation.riaforge.org/
我的表单提交到processSignup.cfc
<cfscript>
objValidation = createObject("component","cfcs.validation").init();
objValidation.setFields(form);
objValidation.validate();
</cfscript>
<!--- clear the error/success message --->
<cfset msg="">
<cfif objValidation.getErrorCount() is not 0>
<cfsavecontent variable="msg">
<H2>Error in form submission</H2>
<P>There were <cfoutput>#objValidation.getErrorCount()#</cfoutput> errors in your submission:</P>
<ul>
<cfloop collection="#variables.objValidation.getMessages()#" item="rr">
<li><cfoutput>#variables.objValidation.getMessage(rr)#</cfoutput></li>
</cfloop>
</ul>
<p>Please use the back button on your browser to correct your submission.</p>
</cfsavecontent>
</cfif>
<cfdump var="#objvalidation#">
<cfoutput>
#msg#
</cfoutput>
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出

我正在尝试弄清楚的是结构的名称以及如何获得"确认密码","密码","用户名",但我是密集的,我无法弄清楚如何.
<!---
<fusedoc fuse="Validation.cfc" language="ColdFusion" specification="2.0">
<responsibilities>
I am a ColdFusion Component that performs server-side …Run Code Online (Sandbox Code Playgroud) 我有一个cfinvoke写入一个像200,000条记录的表.然后我有另一个cfinvoke写入关于同一个表的100,000条记录.
我想知道这将如何执行?
PS,cfinvoke 2 不依赖于cfinvoke 1,但我更喜欢它们一个接一个地执行.
任何有关制定选项2的建议都非常感谢.
我正在使用ColdFusion 9.1.2.
我有一个名为orders.cfm的CFC.这是"父母"CFC.
我有另一个CFC调用orderswrapup.cfc.这是orders.cfc的扩展.在orderswrapup.cfc中,我在顶部有这一行:
<cfcomponent extends="orders">
Run Code Online (Sandbox Code Playgroud)
现在,这不起作用:
objOrders = createObject("component", "orders");
MyResult = objOrders .someMethodActuallyInOrdersWrapUpCFC();
Run Code Online (Sandbox Code Playgroud)
但这确实有效:
objOrders = createObject("component", "orderswrapup");
MyResult = objOrders .someMethodActuallyInOrdersWrapUpCFC();
Run Code Online (Sandbox Code Playgroud)
要访问orderswrapup.cfc中的方法,我可以像调用"in"orders.cfc一样调用该方法,还是需要直接调用它?看来我应该能够打电话给父母,而不是孩子.
我无法通过论证:
<cfset result = news.updateNews(form.id, form['title'&form.id])>
Run Code Online (Sandbox Code Playgroud)
我得到了最后一个参数的错误,说"在类coldring.filter.FormScope类型的Java对象中未定义元素title2.".
有小费吗?除此之外,语法应该是什么?
实际上我使用UserId与客户端范围.
我可以直接在组件文件中使用Client范围,还是仅通过参数范围使用?鉴于以下代码哪一个是正确的?或者两者都对吗?
使用客户端范围:
<cfset getUsers = Application.Users.getAllUsers()>
<cffunction name="getAllUsers" returntype="query">
<cfquery name="read" datasource="myDsn">
Select *
from Users
Where UserID = <cfqueryparam cfsqltype="cf_sql_integer" value="#Client.UserID#">
</cfquery>
<cfreturn read>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
使用参数范围:
<cfset getUsers = Application.Users.getAllUsers(UserID = Client.UserID)>
<cffunction name="getAllUsers" returntype="query">
<cfargument name="UserID" type="any" required= "true">
<cfquery name="read" datasource="myDsn">
Select *
from Users
Where UserID = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.UserID#">
</cfquery>
<cfreturn read>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
请给我方便的解决方案.提前致谢.
cfc ×10
coldfusion ×10
cfinvoke ×1
coldfusion-9 ×1
comments ×1
inheritance ×1
mysql ×1
qoq ×1
scope ×1
structure ×1