Xpages отправляет вложение из документа в другой

У меня есть документ, который идет на сканер. Сканер отправляет электронное письмо в мою базу данных, и из представления я могу получить доступ к этому документу и увидеть вложение и тему.

Есть ли способ использовать вложение и поместить его в другой документ? Мне удалось отправить расширенный текст темы с помощью sessionScope, но он не работает с вложениями.

В целевом документе у меня есть fileDownloader.

Как лучше всего это сделать?


person Florin Pop    schedule 04.11.2014    source источник
comment
Как создать целевой документ? Это из исходного документа?   -  person poisonedYouth    schedule 04.11.2014
comment
Да, это из исходного документа.   -  person Florin Pop    schedule 04.11.2014
comment
Вы хотите открыть целевой документ или только для сохранения данных?   -  person poisonedYouth    schedule 04.11.2014
comment
Чтобы открыть его. Я использую документ UNID, чтобы добраться до документа.   -  person Florin Pop    schedule 04.11.2014
comment
Почему бы вам не использовать метод copyAllItems для дублирования исходного документа, а затем удалить все ненужные элементы?   -  person poisonedYouth    schedule 04.11.2014
comment
Я не знаю этого метода + мне нужно, чтобы некоторые другие поля в целевом документе были пустыми.   -  person Florin Pop    schedule 04.11.2014
comment
не могли бы вы опубликовать свой код, и я постараюсь показать вам, как использовать copyAllItems   -  person poisonedYouth    schedule 04.11.2014
comment
У меня нет кода. У меня есть кнопка в документе, которая откроет другой документ, в который я хочу добавить вложение из предыдущего документа.   -  person Florin Pop    schedule 05.11.2014


Ответы (1)


Используйте метод appendRTItem() NotesRichTextItem:

  • Считайте исходный элемент Body в NotesRichTextItem
  • создайте новый NotesRichTextItem в новом документе
  • добавьте исходный NotesRichTextItem к вашему новому созданному

Это также копирует все вложения, включенные в RichText.

Пример:

  var docOrig:NotesDocument = ...;
  var docNew:NotesDocument = database.createDocument();
  docNew.replaceItemValue("Form", "Test");
  var bodyOrig:NotesRichTextItem = docOrig.getFirstItem("Body");
  var bodyNew:NotesRichTextItem = docNew.createRichTextItem("Body");
  bodyNew.appendRTItem(bodyOrig);
  docNew.save();

Пример 2:

Тот же код, встроенный в кнопку XPage с источником данных «document1». Кнопка

  • создает новый документ с формой "Тест",
  • копирует элемент RichText "Body" со всеми вложениями из текущего документа "document1" в новый документ и
  • открывает XPage "Test.xsp" для нового созданного документа
<xp:button
    value="Create and open new document with a copy of current document's item Body"
    id="button1">
    <xp:eventHandler
        event="onclick"
        submit="true"
        refreshMode="complete">
        <xp:this.action>
            <xp:openPage
                name="Test.xsp"
                target="editDocument">
                <xp:this.documentId><![CDATA[#{javascript:
                    var docOrig:NotesDocument = document1.getDocument();
                    var docNew:NotesDocument = database.createDocument();
                    docNew.replaceItemValue("Form", "Test");
                    var bodyOrig:NotesRichTextItem = docOrig.getFirstItem("Body");
                    var bodyNew:NotesRichTextItem = docNew.createRichTextItem("Body");
                    bodyNew.appendRTItem(bodyOrig);
                    docNew.save();
                    return docNew.getUniversalID();}]]></xp:this.documentId>
            </xp:openPage>
        </xp:this.action>
    </xp:eventHandler>
</xp:button>

Предварительное условие для обоих примеров: вложения должны находиться в элементе «Тело» текущего документа.

person Knut Herrmann    schedule 05.11.2014
comment
Я открываю новый документ с помощью события кнопки «Открыть страницу», не нужно создавать его с помощью database.createDocument(), и как я могу сохранить тело с предыдущей страницы и перенести его на новую страницу? - person Florin Pop; 05.11.2014
comment
Вы можете использовать код от Knut, чтобы скопировать rtItem и сохранить документ (чтобы получить unid). С помощью unid вы можете использовать простое действие «Открыть страницу» для редактирования документа. - person poisonedYouth; 05.11.2014
comment
Это то, что я сделал, но не работал. У моего fileDownloader все еще не было вложения. - person Florin Pop; 05.11.2014