Невозможно сослаться на представление в другой базе данных из XPiNC
У меня есть повтор, где значение циклически перебирает документы в текущей базе данных, эти документы содержат базу данных и имя представления. Затем повтор открывает базу данных, просматривает и извлекает данные из них:
var dbOther:NotesDatabase = session.getDatabase(null, doc.getItemValueString("Database"));
if(dbOther != null){
var lookupView:NotesView = dbOther.getView(doc.getItemValueString("ViewName"));
var viewNav:NotesViewNavigator = lookupView.createViewNavFromCategory(key);
}
Это прекрасно работает во всех браузерах, но если я просматриваю xpage в Notes Client, я получаю следующую ошибку: Возникла исключительная ситуация при вызове метода NotesDatabase.getView (string) null
Я проверил, что переменная dbOther устанавливается путем записи свойств Server и FilePath в журнал. Я проверил, что он может видеть представления, генерируя цикл, используя getViews и getAliases, снова все псевдонимы представления были записаны в журнал без проблем.
Я вручную ввел имя представления в случае, если значение не было выбрано из документа правильно, но получило ту же ошибку.
Есть ли способ подключиться к представлению в другой базе данных в XPiNC? Я нашел XSnippet, который позволяет вам динамически добавлять источники данных представления на вашу страницу, я думаю, что это может обойти мою проблему, но хотел выяснить, было ли альтернативное решение, прежде чем переписать все!
1 ответ
Попробуйте некоторые из этих других способов получить ручку на базе данных:
Этот использует ""
вместо null
параметр для указания текущего сервера:
var dbOther:NotesDatabase = session.getDatabase("", doc.getItemValueString("Database"))
Этот использует database.getServer()
вместо нулевого параметра:
var dbOther:NotesDatabase = session.getDatabase(database.getServer(), doc.getItemValueString("Database"))
Этот использует sessionAsSigner
получить доступ к базе данных (вместо использования учетных данных текущего пользователя):
var dbOther:NotesDatabase = sessionAsSigner.getDatabase(database.getServer(), doc.getItemValueString("Database"))
Вы используете клиент Lotus Notes 8.5.3?