Закрытие тега cfpdf с </cfpdf> вызывает ошибку - PullRequest
0 голосов
/ 26 августа 2011

Если я использую следующий код в своем компоненте:

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

, я получаю следующую ошибку:

Закрывающий тег '' не соответствует текущему родительскому элементу: 'cffunction '

Однако, если я изменю код на:

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

, я не получаю ошибок.Обратите внимание, что единственный способ изменить код - это закрыть тег.Может кто-нибудь объяснить мне, почему это и даже лучше, скажите мне, как обойти это?

Ошибка отображается в CFEclipse в представлении «проблемы», но не возникает, когда я запускаю код на сервере.

Настройка системы: Win7, запуск Eclipse Indigo с CFEclipse v.1.4.3.Сервер работает под управлением Coldfusion 8.

Обновление 1:

Если я просто игнорирую ошибку разбора, которую показывает CFEclipse, и запускаю код на сервере, он работает должным образом.Я думаю, это говорит о том, что это действительно что-то с самим 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>

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Это звучит как ошибка в файлах словаря CFEclipse.

Если вы можете подтвердить, что первый код действительно работает на CF8, тогда вы можете сообщить об этом как об ошибке CFE , и кто-то, вероятно, может помочь вам с исправлением.

Чтобы исправить это самостоятельно ...

  1. Найдите каталог плагинов Eclipse (например, /usr/lib/eclipse/plugins или c:/program files/eclipse/plugins или где-либо еще).

  2. Внутри директории вашего плагина ищите каталог org.cfeclipse.cfml (у него, вероятно, есть метка времени после имени, которое зависит от вашей версии, но должен быть только один *), а внутри, что есть dictionary папка, содержащая кучу файлов XML.
    (* если существует несколько версий, выберите самую новую - то есть наибольшее число.)

  3. Требуется либо cf8.xml, либо cf9.xml - в зависимости от того, для какого проекта настроен ваш проект (чтобы проверить, в навигаторе CFE щелкните правой кнопкой мыши проект, выберите свойства, затем cfeclipse и посмотрите, что выбрана опция радио) - сначала создайте резервную копию файла, затем откройте его в любом текстовом / XML-редакторе.

  4. Поиск name="cfpdf" - должно быть одно вхождение - и в том же теге вы должны увидеть атрибут single="true" - измените его на single="false" и сохраните файл.

  5. Перезапустите CFEclipse и, если я не испортил эти инструкции, сообщение об ошибке должно исчезнуть. :)

Я не проверял ничего из этого (у меня еще нет CFE на этом компьютере), но до тех пор, пока вы создаете резервную копию файла словаря перед редактированием, проблем не должно быть.

0 голосов
/ 26 августа 2011

Это может быть связано с окружающим кодом или кодом внутри тегов <cfpdf></cfpdf>.Можете ли вы показать больше контекста?

...