[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