Poi Зависает После Создания Отчета

Тема в разделе "Lotus - Xpages", создана пользователем Bob84, 17 дек 2014.

  1. Bob84

    Bob84 Active Member

    Регистрация:
    16 май 2012
    Сообщения:
    38
    Симпатии:
    0
    Здравствуйте.
    С помощью библиотеки POI создаем отчеты в Excel. После того как пользователю предоставляется файл с результатом, для загрузки, на некоторое время (10-20 сек) в окне перестают работать кнопки и ссылки для перехода на другие Xpage.
    Примерный код кнопки, для создания отчета:
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">onClick, ServerSide</div></div><div class="sp-body"><div class="sp-content">
    Код (C++):
    try{   
    importPackage(java.lang);
    importPackage(org.apache.poi.hssf.usermodel);
    importPackage(org.apache.poi.hssf.util);

    var sheetName = "Лист1";
    var workbookName = "workbook1";

    var doc: NotesDocument;

    var prevDoc: NotesDocument;

    var wb = new HSSFWorkbook();

    var sheet1 = wb.createSheet(sheetName);

    var query = "формула отбора"

    var dcNotSorted: NotesDocumentCollection = database.search(query);

    // <бегаем по коллекции>***************************************
    rows=sheet1.getLastRowNum();
    var dc: NotesDocumentCollection = SortCollection(dcNotSorted, ["ключ для сортировки"]);

    doc = dc.getFirstDocument();

    while (doc != null) {
    //обработка документа, создаем строки таблици и заполняем их данными из документа

    prevDoc = doc;
    doc = dc.getNextDocument(doc);     
    }  
    // </бегаем по коллекции>***************************************

    // <вывод результата>
    try {
    //Create the filename for the spreadsheet  
    var fileName = workbookName + ".xls";
    // The Faces Context global object provides access to the servlet environment via the external content
    var extCont = facesContext.getExternalContext();
    // The servlet's response object provides control to the response object
    var pageResponse = extCont.getResponse();
    //Get the output stream to stream binary data
    var pageOutput = pageResponse.getOutputStream();
    // Set the content type and headers
    pageResponse.setContentType("application/x-ms-excel");
    pageResponse.setHeader("Cache-Control", "no-cache");
    pageResponse.setHeader("Content-Disposition", "inline; filename=\"" + fileName + "\"");
    //Write the output, flush the buffer and close the stream
    wb.write(pageOutput);
    } catch (e) {
    print(e.toString());
    } finally {
    pageOutput.flush();
    pageOutput.close();
    // Terminate the request processing lifecycle.
    facesContext.responseComplete();
    }
    // </вывод результата>
    }catch (e) {
    view.postScript('alert("' + e.toString() + '")');  
    }

    Для работы используем следующий jar POI - poi-3.10.1-20140818.jar

    Спасибо.
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Лучше навесь этот код на отдельную страницу.. в событие afterPageLoad.
    А по кнопке или ссылке открывай эту страницу
     
  3. Bob84

    Bob84 Active Member

    Регистрация:
    16 май 2012
    Сообщения:
    38
    Симпатии:
    0
    Сделал xpage report2Click.xsp, создание отчета повесил на afterPageLoad. На старнице отчета сдела кнопку с кодом:
    Код (C++):
    context.redirectToPage("report2Click.xsp");
    Эффект тот же, пробовал вешать на событие BeforeRenderResponse, при установленом rendered в false - все равно есть подвисание после отработки.
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну у меня тоже этот метод используется, но проблем никаких.
    Но с другой стороны, а почему не должно быть тормозов?
    Какой объем данных передается?
     
  5. Bob84

    Bob84 Active Member

    Регистрация:
    16 май 2012
    Сообщения:
    38
    Симпатии:
    0
    Объем совершенно незначительный, база тестовая, как правило около десяти документов обрабатывает.
     
Загрузка...
Похожие Темы - Poi Зависает После
  1. Hollyman
    Ответов:
    0
    Просмотров:
    1.079
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.040
  3. Vladislava-smile
    Ответов:
    5
    Просмотров:
    1.266
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.219
  5. student55
    Ответов:
    0
    Просмотров:
    1.563

Поделиться этой страницей