Вывод IcefacesRessource: получить ресурс 404, а не фонд - PullRequest
0 голосов
/ 16 ноября 2011

У меня проблема с <ice:outputResouce>.Все работает как положено, но когда я нажимаю кнопку загрузки, я получаю сообщение об ошибке: HTTP Status 404 - Resource not found

Вот мое окружение:

  • Icefaces 2.0
  • onLiferay 6.0.6 через PortletFaces
  • , работающий на JBoss 5.1

Метод public Resource getPdfResource():

 public Resource getPdfResource() {
    System.out.println("GET PDF Ressource: " + getPDF());
    if (getPDF() == null) {
        return null;
    }
    try {
        File f = PDFFileUtils.getFile(getPDF());
        Resource res = new ByteArrayResource(
                IOUtils.toByteArray(new FileInputStream(f)));
        return res;
    } catch (IOException e) {
    //...
    }
    //...
    return null;
}

и блок <ice:outputResouce> в моем .xhmtl

<ice:outputResource
   label="#{i18n['download']} #{publishBackingBean.pdfName}"
   type="button"
   shared="false"
   fileName="#{publishBackingBean.pdfName}"
  resource="#{publishBackingBean.pdfResource}" attachment="true">
</ice:outputResource>

Ресурс сервлет работает нормально.

У кого-нибудь есть идея?Я думаю, что, возможно, есть проблема с liferay & |portletbridge ...

EDIT :

Теперь я добавил несколько сообщений отладки в FileResouce:

Resource res = new FileResource(f){
            /* (non-Javadoc)
             * @see com.icesoft.faces.context.FileResource#calculateDigest()
             */
            @Override
            public String calculateDigest() {
                System.out.println("Calc Dig calld: "+ super.calculateDigest());
                Thread.dumpStack();
                return super.calculateDigest();
            }
            /* (non-Javadoc)
             * @see com.icesoft.faces.context.FileResource#open()
             */
            @Override
            public InputStream open() throws IOException {
                System.out.println("open called");
                return super.open();
            }
            /* (non-Javadoc)
             * @see com.icesoft.faces.context.FileResource#lastModified()
             */
            @Override
            public Date lastModified() {
                System.out.println("lm called");
                return super.lastModified();
            }
        };

Единственный метод сВызывается calculateDigest:

2011-11-16 13:13:32,546 INFO  [STDOUT] (http-0.0.0.0-8080-8) Calc Dig calld: /opt/dreipp/webpublish/pdf/aed91373-f5b7-407b-9f35-e21e7ec6f059/PRESENTATION_PDF/Envlisch version-en_US.pdf
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8) java.lang.Exception: Stack trace
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8)    at java.lang.Thread.dumpStack(Thread.java:1249)
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.dreipplus.web.profiler.publish.beans.PublishBackingBean$1.calculateDigest(PublishBackingBean.java:126)
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.icesoft.faces.component.outputresource.RegisteredResource.calculateDigest(OutputResource.java:466)
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.icesoft.faces.context.ResourceRegistryLocator$DynamicResourceDispatcherAdapter$DynamicResourceAdapter.calculateDigest(ResourceRegistryLocator.java:113)
2011-11-16 13:13:32,546 ERROR [STDERR] (http-0.0.0.0-8080-8)    at org.icefaces.impl.push.DynamicResourceDispatcher.encode(DynamicResourceDispatcher.java:291)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at org.icefaces.impl.push.DynamicResourceDispatcher.registerResource(DynamicResourceDispatcher.java:161)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at org.icefaces.impl.push.DynamicResourceDispatcher.registerResource(DynamicResourceDispatcher.java:136)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.icesoft.faces.context.ResourceRegistryLocator$DynamicResourceDispatcherAdapter.registerResource(ResourceRegistryLocator.java:93)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.icesoft.faces.component.outputresource.OutputResource.getResource(OutputResource.java:120)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at com.icesoft.faces.component.outputresource.OutputResourceRenderer.encodeBegin(OutputResourceRenderer.java:47)
2011-11-16 13:13:32,547 ERROR [STDERR] (http-0.0.0.0-8080-8)    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820)

спасибо заранее коротко

...