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. プラグイン dir 内でディレクトリを探しorg.cfeclipse.cfml(おそらく名前の後にタイムスタンプがあり、これはバージョンによって異なりますが、1 つしかないはずです*)、その中にdictionary多数の XML ファイルを含むフォルダーがあります。
    (*複数のバージョンがある場合は、最新のもの、つまり番号が最も大きいものを使用してください。)

  3. cf8.xmlまたはcf9.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 に答える