Из всех странностей в нашем текущем проекте XPages это один в настоящее время попадает в потолок:XPages выполнения интерпретации Java имя пакета в качестве строкового объекта
мы создали несколько Java Beans в нашем текущем проекте. Внутри Domino Designer все они хранятся ниже Код >> Java, так что ясно, что они являются автоматически частью пути к проекту. Все наши бобы относятся к структуре пакета de.edcom.*
(это то, что мы использовали навсегда без каких-либо проблем). Объекты в основном вызваны из SSJS, используя полные имена пакетом (не зарегистрированы в качестве управляемых компонентов по разным причинам), как в
var o = de.edcom.myObject.someMethod();
Ни в одном из моих предыдущих проектов XPages это вызвало никаких проблем, он просто работал. В текущем проекте, однако во время выполнения XSP вдруг начали интерпретировать имя пакета в качестве строкового объекта дает нам эту ошибку во время выполнения:
Unknown member 'edcom' in Java class 'java.lang.String'
ssjs строка кода в вопросе, глядя, как это:
return de.edcom.TOC.buildTOC();
Мы абсолютно не знаем, что может быть причиной этого, почему только в этом проекте и почему он иногда работает, но в основном это не так.
Там одна разницы между этими проектами и другими раньше, и это locallization: пользователи могут переключаться между «английским» и «немецким» локал, и, конечно, мы используем коды как
context.setLocaleString("de")
и, конечно, мы имеем несколько фрагментов коды JavaScript ищем локальные настройки, как в
if(context.getLocalString()==="de"){...
Сегодня утром мы на самом деле переименовали/переработана все Java Beans для разных имен пакетов (com.edcom. *), и с тех пор ошибка hasn Появился (пальцы скрещены!).
Но опять же я думаю, что это слишком глупо, на самом деле не может быть связи, или это может быть?
EDIT:
Я попытался с помощью importPackage()
, в сочетании с xe:objectData
(источник данных в соответствии с рекомендациями Адриана и Павла в своих ответах), но я все еще получаю, что «unknown member 'edcom' in Java class 'java.lang,String'
» сообщение, в настоящее время только на другое положение в коде на моей линии, говорящее importPackage(de.edcom)
.
Я вернусь к пакету «com.edcom» и буду искать лучшее решение; к сожалению, поиск строки «de» внутри всего кода дает около 12 000 совпадений; Теперь способ найти истинную причину этого в том, что стог
EDIT # 2:
выглядит как мы наконец нашли страшную «де» переменная: она была хорошо спрятана в вычисленной customControl собственности; Я не знаю, почему все поисковые запросы, которые я выполнял за последние несколько дней, не смогли найти.
В любом случае, очень хорошо знать, что мы должны быть еще более осторожными при указании наших переменных ssjs; Я никогда бы не подумал, что имя переменной ssjs может когда-либо помешать части TLD в пакетах Java; мы, вероятно, сделать его внутреннюю политику, наши переменные должны должны быть названы «vDe
», «vCom
», «vIt
» и т.д., а не только коротких строчных букв ...
Не забудьте объяснить значение такой внутренней политики. В противном случае вы можете столкнуться с проблемами с переменными «vA» и пакетами из Ватикана :-) –