0

如果我在组件中使用以下代码:

<cfpdf action="merge" name="tender">
</cfpdf>

我收到以下错误:

结束标记“”与当前父项不匹配:“cffunction”

但是,如果我将代码更改为:

<cfpdf action="merge" name="tender" />

我没有错误。请注意,我更改代码的唯一方法是关闭标签。谁能向我解释为什么会这样,甚至更好,告诉我如何解决这个问题?

该错误显示在 CFEclipse 的“问题”视图中,但在我在服务器上运行代码时不会发生。

系统设置:Win7,运行带有 CFEclipse v.1.4.3 的 Eclipse Indigo。服务器运行 Coldfusion 8。

更新1:

如果我只是忽略 CFEclipse 显示的解析错误并在服务器上运行代码,它会按预期工作。我想这表明它确实像 Peter Boughton 所建议的那样与 CFEclipse 本身有关,而不是代码本身的问题。

以防万一,这里是函数的完整代码(请注意,这不是生产代码,我目前只是为了让我需要的东西工作而进行测试):

<cffunction name="GetTenderPDF" access="remote">
        <cfargument name="Info" type="String" required="true" />

        <cfset var Tender = {} />
        <cfset var InfoJson = URLDecode(Arguments.Info) />

        <cfif Not IsJSON(InfoJson)>
            <cfreturn Error(Messages.NOT_JSON) />
        </cfif>

        <cfset Tender = DeserializeJSON(InfoJson) />
        <cfset templatePath = "templates/tenderTemplate_"&Tender.GROUP&".cfm" />

        <cfheader name="Content-Disposition" value="attachment; filename=offert.pdf" />

        <cfdocument format="pdf" name="mydocument">

        <cfloop index="x" from="1" to="15">
              <p>
              lorem upsom doloras paris hilton is my hero loreum ipsom dsoio foom an to dht end of the world
              will anyone actually read this probably not but let me put more realtext in so it flows a bit nicely
                  <cfloop index="y" from="1" to="#randRange(1,9)#">This sentence will appear a random amount of time.</cfloop>
              </p>
            </cfloop>

        </cfdocument>
        <cfdocument format="pdf" name="base">
            <cfinclude template="#templatePath#" />
        </cfdocument>

        <!--- <cfpdf action="merge" name="tender" /> --->
        <cfpdf action="merge" name="tender">
            <cfpdfparam source="base" />
            <cfpdfparam source="mydocument" />
        </cfpdf>

        <cfcontent type="application/pdf" reset="true" variable="#toBinary(tender)#" /> 

    </cffunction>
4

2 回答 2

2

这听起来像是 CFEclipse 字典文件中的错误。

如果您可以确认第一个代码确实在 CF8 上运行,那么您可以将其报告为 CFE 错误,并且有人可能会帮助您进行修复。

要自己修...

  1. 找到您的 Eclipse 插件目录(例如/usr/lib/eclipse/plugins,或c:/program files/eclipse/plugins或任何地方)。

  2. 在您的插件目录中查找org.cfeclipse.cfml目录(名称后可能有一个时间戳,这取决于您的版本,但应该只有一个*),其中有一个dictionary文件夹,其中包含一堆 XML 文件。
    (*如果有多个版本,请选择最新版本 - 即最高版本。)

  3. 您想要cf8.xmlcf9.xml- 取决于您为哪个项目配置了项目(要检查,在 CFE 导航器中,右键单击项目,选择属性,然后选择 cfeclipse,然后查看选择了哪个单选选项) - 首先创建一个备份文件,然后使用任何文本/xml 编辑器打开它。

  4. 搜索name="cfpdf"- 应该出现一次 - 并且在同一个标​​签中您应该看到该属性single="true"- 将其更改为single="false"并保存文件。

  5. 重新启动 CFEclipse,并且 - 如果我没有搞砸这些说明 - 那么错误消息应该已经消失了。:)

我还没有测试过这些(这台机器上还没有CFE),但只要你在编辑之前备份字典文件就不会有任何问题。

于 2011-08-26T13:44:03.210 回答
0

这可能与周围的代码或标签内的<cfpdf></cfpdf>代码有关。你能显示更多的上下文吗?

于 2011-08-26T13:37:28.997 回答