Я использую расширения facfaces documentViewer для показа pdf-файлов. Файлы передаются потоком, это означает, что бэк-компонент предоставляет экземпляр org.primefaces.model.DefaultStreamedContent
. Если показан большой PDF-файл, потребовалось некоторое время, пока зритель ничего не покажет. В витрине веб-сайта расширений PF documentViewer
показывает панель загрузки под панелью кнопок зрителей. К сожалению, это не показано в моем случае. В витрине нет DefaultStreamContent
. Это url для файла. Может быть, мне нужно установить общий размер потокового контента? Возможно ли это с DefaultStreamedContent
?Основные интерфейсы documentViewer показать статус загрузки
2
A
ответ
2
Может быть, я должен установить общий размер для поточного содержания
Да! Клиент может вычислить только прогресс, если длина содержимого ответа известна заранее. В JSF вы можете установить длину содержимого ответа через ExternalContext#setResponseContentLength()
.
При условии, что вы хотите вернуть StreamedContent
, вот как вы можете это сделать (на основе ао Display dynamic image from database with p:graphicImage and StreamedContent):
@ManagedBean
@ApplicationScoped
public class PdfManager {
@EJB
private PdfService service;
public StreamedContent getContent() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
return new DefaultStreamedContent();
} else {
Pdf pdf = service.generateItSomehow();
context.getExternalContext().setResponseContentLength(pdf.getLength());
return new DefaultStreamedContent(pdf.getInputStream());
}
}
}
Смежные вопросы
- 1. Показать статус загрузки
- 2. Показать html MemoryStream в DocumentViewer
- 3. Как показать статус загрузки в мыши?
- 4. Может ли Firefox показать статус загрузки файла?
- 5. Основные интерфейсы FileUpload с MobileRenderKit
- 6. Как показать статус загрузки загрузки pdf в iOS
- 7. Основные интерфейсы: отключить ajaxStatus для datatable Фильтр
- 8. Как показать документ потока с помощью DocumentViewer?
- 9. Основные интерфейсы FileUploadEvent Метод приемника не работает
- 10. Основные интерфейсы - FileUploader не вызывает ManagedBean
- 11. Как правильно реализовать основные интерфейсы Clojure?
- 12. Основные интерфейсы p: confirmDialog внутри tabView
- 13. Основные интерфейсы 5.1 и Wildfly не разворачиваются
- 14. Основные интерфейсы ckeditor - отсутствующая панель инструментов
- 15. Основные интерфейсы 2.2.1 Обновление данных и стекированиеBarChart
- 16. Основные интерфейсы Datatable filterOptions от ArrayList
- 17. Определить статус загрузки
- 18. Определить статус загрузки модуля
- 19. Статус загрузки TextureAtlas
- 20. Как получить статус загрузки?
- 21. Как показать статус загрузки в процентах для ответа ajax?
- 22. Magento - Показать основные категории
- 23. Показать Facebook Статус Publicly
- 24. Показать статус в mysql
- 25. Показать статус каждой темы
- 26. MySQL показать статус
- 27. Показать статус онлайн
- 28. Основные интерфейсы 3.3 несколько файлов в одной форме
- 29. Отключить кнопку загрузки/печати в файлах правки documentViewer
- 30. Основные интерфейсы не работают в режиме jsf 2.0
* «? Может быть, я должен установить общий размер для поточного содержания» * Да ! В аромате 'response.setContentLength (contentLength)'. Затем клиент может вычислить прогресс. – BalusC
Хорошо, не думал об этом. К сожалению, я не могу это проверить, потому что я понял, что наша бэкэнд-модель не обеспечивает надежный размер. Если размер слишком большой, зритель показывает исключение PDFException. – opfau
Это должен быть точный размер (т. Е. Количество байтов). Вы хотите сказать, что ваши PDF-файлы автоматически генерируются автоматически на основе произвольных данных и, таким образом, не (временно) статически сохраняются в каком-либо хранилище данных? – BalusC