Элемент VAR не определен в АТРИБУТАХ ColdFusion 11

Я пытаюсь вызвать метод из класса Java, но получаю исключение, которого раньше не видел.

Это то, что я получаю, когда я вызываю класс и один из методов, и как я это получил

<cfdump var="#nlp#">
<cfdump var="#nlp.run()#">

введите здесь описание изображения

И это исключение, которое я получил, когда пытаюсь сбросить метод

19:12:31.031 - Expression Exception - in Z:/Sites/xamplifier/views/surveyreporting/wordcloud.cfm : line 157
        Element VAR is undefined in ATTRIBUTES.

Я неправильно вызываю метод? Вот как у нас был код на CF9, и все работает, но у CF 11, похоже, есть проблемы...


person Geo    schedule 07.01.2015    source источник
comment
(Изменить) Если ошибка связана с cfdump, это может быть просто потому, что run() возвращает null. Это не редкость для классов Java, так что это не обязательно проблема, если только вы не говорите, что один и тот же код ведет себя по-разному в CF9. Игнорируя cfdump, чего вы ожидали и что возвращает run() в CF9?   -  person Leigh    schedule 07.01.2015
comment
Я с Ли - cfdump невероятно полезен, но иногда он ломает голову над различными возвратами Java.   -  person Mark A Kruger    schedule 07.01.2015
comment
Таким образом, в основном исходный код выглядит примерно так: <cfset result = "#nlp.run()#">, а затем мы зацикливаемся на result, чтобы создать вывод на экране... РЕДАКТИРОВАТЬ: result - это массив   -  person Geo    schedule 07.01.2015
comment
Ничего не зная о классе, невозможно узнать, почему он возвращает null. Нет, если это не связано с какой-либо ошибкой (проверьте журналы исключений, чтобы быть уверенным). Метод Java довольно часто возвращает null, если некоторые условия не выполняются, но это продиктовано самим кодом. Так что невозможно точно сказать, почему это происходит здесь (а не в CF9), не зная больше об этом классе.   -  person Leigh    schedule 07.01.2015


Ответы (2)


Похоже, что метод Open_NPL run() генерирует исключение, которое перехватывается и возвращает null. См. здесь: Исходный код Open_NPS

Согласитесь с другими ответами, вам просто нужно проверить NULL, чтобы избежать исключения CF, и покопаться в Java, чтобы определить основную причину.

person Troy S    schedule 07.01.2015
comment
Хорошая находка исходного кода. Не знаю, почему код ловит исключения и выводит их на стандартный вывод, а не позволяет им всплывать. Тогда, по крайней мере, вызывающее приложение будет знать, что есть проблема. @Geo - Проверьте различные журналы. Не знаю, где окажется сообщение, но, вероятно, его не будет в стандартном журнале исключений, поскольку код использует System.out.println. - person Leigh; 08.01.2015
comment
Я знаю парня, который создал источник, но, к сожалению, последние несколько дней он недоступен. Это тот самый парень, который работал над нашей версией CF9, а также мой бывший сосед по комнате :) - person Geo; 08.01.2015

Метод Java возвращает NULL, что в ColdFusion равносильно тому, что он не определен. Вам нужно зафиксировать результат и протестировать его.

<cfset local = {}><!--- if inside a function, this isn't necessary --->
<cfset local.result = nlp.run() >
<cfif not isNull( local.result ) >
  <cfdump var="local.result">
<cfelse>
  NULL!
</cfif>
person Brad Wood    schedule 07.01.2015
comment
Я понимаю часть NULL, но почему это NULL? - person Geo; 07.01.2015