У меня проблема с <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)
спасибо заранее коротко