2014-10-22 4 views
3

В чем разница? Когда я должен выбирать один за другим?Xpages bean vs данные объекта

и некоторые незначительные вопросы, связанные с этим:

  • , если у меня есть данные объекта, когда saveObject называется?

  • похоже, что сборщик мусора перерабатывает все мои ручки домино. Я попытался сбить, затем клонировать его, но это не помогло (как он знает его еще объект домино?). Есть ли обходной путь?

  • если я создаю «var tmpVar = новый пакет.TestClass()» из xPages, он получает рециркуляцию при обновлении. Но если я создаю объект java из bean-компонента, он останется там. Верный?

ответ

4

Я иду туда и обратно по чистой управляемой фасоли против объекта данных. Я использовал много объектов данных некоторое время, но затем столкнулся с некоторыми проблемами с жизненным циклом JSF, я думаю, что я просто не мог работать. Не уверен, что был задействован повторный или пользовательский контроль. Так что я в значительной степени вернулся и сейчас отказался от них.

Другое, тогда эта проблема у меня была, я не уверен, что есть тонна разницы. Я думаю, что dataObject может быть немного путаницей. Поскольку вы можете установить его на XPage, но вы можете изменить его область на сеанс или приложение, которое я считаю. Но если вы это сделаете, это кажется более беспорядочным и трудным для поиска, а затем созданием компонента в face-config.

Я не уверен в части вашего объекта saveObject.

Вы никогда не хотите ставить чистый объект домино внутри компонента или облачной переменной, потому что они не могут быть сериализованы и в какой-то момент будут брошены сборщиком мусора, что, вероятно, будет вам неудобно.

Если вы только что сделали «var tmpVar = новый пакет.TestClass()», то да, который будет убит довольно быстро из-за ограниченного срока службы этой переменной. если вы хотите создать объект таким образом и сохранить его дольше, поместите его в истинную область: viewScope.put («myObject», tmpVar);

У меня есть видео, где я пытался привести примеры из 4 возможных способов использования объектов Java. В блоге размещены некоторые очень хорошие комментарии Тима Tripcony, которые могут дать вам дополнительную информацию.

http://www.notesin9.com/2013/08/01/notesin9-122-working-with-java-objects-in-xpages/

5

Управляемые Бобы именно это, управляемый средой выполнения XPages. Они создаются по мере их первого вызова. Хотя у них есть пустой конструктор, элементы управляемых свойств в faces-config позволяют вам определять значения (и я считаю, что вы можете добавить SSJS-код в faces-config для вычисления значений).

Источники данных объекта позволяют обрабатывать созданные, когда они созданы, и это означает, что они могут быть ограничены до меньшего уровня, чем viewScope - для панели или пользовательского элемента управления. Метод saveObject вызывается событием Save All Datasources. В действительности, если вы кодируете источники данных объектных объектов, вы закодируете кнопку и вызываете соответствующий метод, а не используете простое действие.

Переменные Java могут быть переработаны, но объекты Domino перерабатываются только двумя способами. Первый вызывает методы recycle(), второй - в конце каждого запроса, когда сеанс перерабатывается. Поскольку recycle() вызывает переработку всех дочерних элементов, все возвращается в конце запроса.Вот почему вы не можете хранить объекты Domino в переменной области видимости или любом другом сохраняемом объекте (т. Е. Компоненте). Обратите внимание, что такие объекты, как DateTimes, RichTextStyles и т. Д., Являются дочерними элементами сеанса, а не более гранулированным объектом Domino, таким как NotesItem или NotesRichTextItem.

var tmpVar = new package.TestClass() будет сохраняться только после текущего запроса, если вы где-нибудь храните tmpVar. Если вы используете этот код в методе crerateObject, return tmpVar передаст этот экземпляр TestClass в объект Data.

Смежные вопросы