dataContexts можно рассматривать как глобальные переменные.Преимущества перед функциями SSJS:
1) dataContext запускает SSJS / Java / независимо от того, что возвращает значение.Ссылки на dataContext используют EL (например, # {myVar}), так же, как источники данных.Так что я понимаю, что EL получает значение, а не запускает код SSJS / Java каждый раз.Таким образом, здесь есть преимущество в производительности.
2) Значение dataContext может быть вычислено динамически или при загрузке страницы.Таким образом, вы можете использовать $ {javascript: @Today ()} и запускать его один раз, а не запускать функцию каждый раз.
Я подозреваю, что есть и выигрыш в производительности, поскольку ссылки на dataContexts используют EL.Таким образом, ни в одной из ссылок вы не запускаете SSJS, поэтому нет необходимости проходить через анализатор SSJS.
Дополнительным преимуществом dataContexts является то, что они могут быть ограничены до любого уровня, к которому могут обращаться источники данных - например, XPage, CustomПанель управления или панель.Это дает им преимущество перед viewScope.Таким образом, вы можете также установить dataContext на панели в повторяющемся элементе управления, чтобы избежать множественных ссылок на поле NotesDocument или конкатенации полей.
Я обычно избегал хранения объектов Domino в dataContexts, главным образом из-занеотъемлемые риски утилизации.Я не знаю, есть ли проблема, я '