Проблема с использованием pe: documentViewer в веб-приложении Spring - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь показать PDF на странице JSF, но когда происходит рендеринг, у меня возникает эта проблема, как показано ниже. Я уже перепробовал много решений, но безрезультатно. Я открыт в разных режимах, чтобы показать PDF, как p: media (этот тоже не сработал).

Проблема:

    GRAVE: Error in streaming dynamic resource.
java.lang.NullPointerException
    at br.com.graflogic.utilities.presentationutil.scope.ViewScope.get(ViewScope.java:19)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:327)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1119)
    at org.springframework.beans.factory.access.el.SpringBeanELResolver.getValue(SpringBeanELResolver.java:55)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
    at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:179)

ViewScope:

@Override
public Object get(String name, @SuppressWarnings("rawtypes") ObjectFactory objectFactory) {
    Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();

    if (viewMap.containsKey(name)) {
        return viewMap.get(name);
    } else {
        Object object = objectFactory.getObject();
        viewMap.put(name, object);

        return object;
    }
}

Контроллер:

try {

            final ByteArrayOutputStream out = new ByteArrayOutputStream();

            final Document document = new Document();
            PdfWriter.getInstance(document, out);
            document.open();

            for (int i = 0; i < 50; i++) {
                document.add(new Paragraph("All work and no play makes Jack a dull boy"));
            }

            document.close();
            content = new DefaultStreamedContent(new ByteArrayInputStream(out.toByteArray()), "application/pdf");

        } catch (final Exception e) {
            e.printStackTrace();
        }

Страница:

            <pe:documentViewer height="500" value="#{relatorioController.content}" download="#{relatorioController.downloadFileName}"/>  

Приложение:

PDF. js v1.5.188 (сборка: 0e2d50f) Mensagem : Неожиданный ответ сервера (500) при получении PDF

...