Это отличный вопрос, потому что это одно из немногих исключений из принципа «перезагружать все» (два других примечательных примера: вы должны никогда не перезапускать текущий сеанс или база данных). Это плохая идея - повторно использовать внутренний документ для источника данных, потому что жизненный цикл JSF получает тот же дескриптор, и вы бы переработали его из-под Domino. Источник данных позаботится об этом за нас, поэтому нет необходимости перерабатывать его вручную. С другой стороны, если вы получаете указатель на определенные элементы (например, doc.getFirstItem("someFieldName")
или значения элементов, которые являются датами, вам следует повторно использовать эти объекты, а не сам документ.
Безусловно, наиболее важным сценарием, в котором критически важно повторно использовать объекты Java и SSJS, является итерация просмотра, потому что каждый раз, когда вы переходите к следующей записи или документу, вы теряете дескриптор, если пропускаете переработку. В большинстве других случаев переработка по-прежнему рекомендуется, но ближе к тому, чтобы быть необязательной, потому что для других операций требуется много времени, чтобы протечь настолько, чтобы вызвать проблемы. Но если вы выполняете итерацию очень большого представления, у вас могут легко закончиться ручки за одну итерацию, если вы забудете переработать.
Однако одна напутственная мысль: я редко вижу ситуацию, когда получение дескриптора внутреннего документа источника данных является лучшим подходом, поэтому я бы рекомендовал пересмотреть ваш код, чтобы убедиться, что для начала даже необходимо получить этот дескриптор. . Например, вместо document.getDocument(true).getItemValueString("someFieldName")
просто вызовите document.getValue("someFieldName")
. Возвращаемое значение должно быть идентичным, но оно будет работать более эффективно, и вы не прикасаетесь к внутреннему документу, поэтому переработка не является проблемой. И при каждом доступе к элементу требуется меньше печатать, что, безусловно, со временем накапливается. Аналогичным образом вместо document.getDocument(true).replaceItemValue("someFieldName", "newValue")
подставьте document.setValue("someFieldName", "newValue")
.
person
Tim Tripcony
schedule
20.06.2013