[Javalist] PF component FileDownload
Apuci Bubuka
ruszli68 at gmail.com
2021. Dec. 20., H, 13:49:11 UTC
Sziasztok!
Csináltam egy JSF komponenst, amiben file letöltések vannak. A lényeg:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
<http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>>
<html
xmlns:h="http://java.sun.com/jsf/html"
<http://java.sun.com/jsf/html>
xmlns:p="http://primefaces.org/ui" <http://primefaces.org/ui>
xmlns:f="http://java.sun.com/jsf/core"
<http://java.sun.com/jsf/core>
xmlns:composite="http://java.sun.com/jsf/composite"
<http://java.sun.com/jsf/composite>
>
<composite:interface>
<composite:attribute name="enabled" required="false"
shortDescription="Komponens engedélyezése" default="#{true}"/>
<composite:attribute name="exportFnc" required="true"
shortDescription="Exportáló metódus"
method-signature="org.primefaces.model.DefaultStreamedContent export()"
targets="expTxt expCsv expOds expXls"
/>
</composite:interface>
<composite:implementation>
<h:panelGroup layout="block" styleClass="exporter"
rendered="#{cc.attrs.enabled}">
<h:form>
<p:commandLink id="expTxt" ajax="false">
<p:graphicImage value="/img/export/txt.svg" alt="TXT"/>
<f:param name="exportType" value="TXT"/>
<p:fileDownload value="#{cc.attrs.exportFnc}" />
</p:commandLink>
<p:commandLink id="expCsv" ajax="false">
<p:graphicImage value="/img/export/csv.svg" alt="CSV"/>
<f:param name="exportType" value="CSV"/>
<p:fileDownload value="#{cc.attrs.exportFnc}" />
</p:commandLink>
<p:commandLink id="expOds" ajax="false">
<p:graphicImage value="/img/export/ods.svg" alt="ODS"/>
<f:param name="exportType" value="ODS"/>
<p:fileDownload value="#{cc.attrs.exportFnc}" />
</p:commandLink>
<p:commandLink id="expXls" ajax="false">
<p:graphicImage value="/img/export/xls.svg" alt="XLS"/>
<f:param name="exportType" value="XLS"/>
<p:fileDownload value="#{cc.attrs.exportFnc}" />
</p:commandLink>
</h:form>
</h:panelGroup>
</composite:implementation>
</html>
Használata:
<laja:exporter enabled="#{ValamiController.data.size() > 0}"
exportFnc="#{ValamiController.export}"/>
A controller-ben a rutin valami ilyesmi:
public DefaultStreamedContent export() {
DefaultStreamedContent sc = new DefaultStreamedContent(
new ByteArrayInputStream(exportedFile),
expData.getType().mime, getFileName(lista, expData.getType())
);
....
}
Sajna futtatáskor hibát dob:
java.lang.ClassCastException:
com.sun.faces.facelets.el.ContextualCompositeMethodExpression cannot be
cast to org.primefaces.model.StreamedContent
at
org.primefaces.component.filedownload.FileDownloadActionListener.processAction(FileDownloadActionListener.java:59)
Valakinek ötlete mit lehet neki ártani? Neten majdnem semmi infó, ami van
is 8-9 éves
Köszi! Laja
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20211220/176f3b39/attachment.htm>
További információk a(z) Javalist levelezőlistáról