【问题标题】:ColdFusion CFC returning record countColdFusion CFC 返回记录数
【发布时间】:2011-10-26 23:06:48
【问题描述】:

问题:我有一个 CFM 在 cfform 操作行调用我的 CFC:

在我的 CFC 中,我有 output="false"。我需要将记录计数发送回我的 CFM。当我运行我的 CFM 并输入表单信息时,我的查询运行成功,但它没有返回到我的 CFM,因此我可以显示正确的消息。我刚刚获得了包含我的记录数的 CFC 页面。有什么建议?谢谢!

【问题讨论】:

  • 你能贴一些代码吗??
  • 就像现在一样,这是我的
  • 。是正确的?抱歉,我是新手!
  • 我会根据@Billy Cravens 下面的建议提出一些建议。您必须将表单提交给 CFC,而不是提交一个简单地调用 CFC 的常规 .cfm 页面,有什么特别的原因吗?

标签: coldfusion cfc


【解决方案1】:

由于没有代码,这里对你的工作方式做一些假设......

不要指向 CFC,而是指向 <cfform> 中的 CFM 页面。 (如果你省略这个动作,它会重新指向自己。我喜欢自引用表单页面)

在您的 CFC 中,从您的查询中返回结果结构:

<cfquery datasource="#ds#" name="myQuery" result="myResult">
    INSERT INTO myTable .....
</cfquery>

然后要么返回整个结构,要么只返回myResult.recordCount

<cfreturn myResult.recordCount>

然后在您的 CFM 页面中,您将像这样访问它(假设您使用的是 &lt;cfscript&gt;;如果您使用的是基于标签的,则类似):

recordsAdded = createObject('component','myFolder.myCFC').insertMethod(form);

【讨论】:

  • createObject 方法本身不会返回组件的实例,因此 insertMethod 函数将不可用。你需要做 createObject('component','myFolder.myCFC').init().insertMethod(form);其中 init 方法返回“this”
  • 添加提示,如果您使用的是 SQL Server 2k5+,则可以使用 OUTPUT 子句实际返回所有插入的数据,包括键。然后,您可以根据需要返回要使用的查询结果以及 myQuery.recordCount。
  • @bittersweetryan 实际上,init() 不是必需的,除非你有额外的构造函数代码需要运行(在 CF9 中,构造函数是隐式的,不需要显式执行)
  • 比利 - 我假设它是
【解决方案2】:

我将 cfform 行更改为: ....我的表格的其余部分

然后添加这些行以查看表单是否已提交以及操作是什么:

<!--- create object for cfc --->

但是现在,我的查询没有运行......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2016-01-14
    • 2017-02-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多