Ajuda com <p:dataTable e <p:fileDownload

5 respostas
J

olá,

tenho uma tabela que eh populadas com arquivos de um folder. Nessa tabela tenho nome, caminho, tam;
Coloquei uma coluna com um <p:commandButton para baixar o arquivo correspondente.
Ai esta o grande problema nao sei como pegar o caminho da tabela e passar pro meu bean.

Grato.

5 Respostas

E

Tente assim:

<p:commandButton ...>
	<f:setPropertyActionListener value="#{objeto}"
						target="#{objetoControle.objeto}" />
				</p:commandButton>
J

ErickRAR:
Tente assim:

<p:commandButton ...> <f:setPropertyActionListener value="#{objeto}" target="#{objetoControle.objeto}" /> </p:commandButton>

nao entendi os parametros

E

Você tem um data table, certo? No datatable você preencher com uma lista de Objetos(sabe o que é objeto, certo?). Então, no setPropertyActionListener, você passa o objeto para o seu controle. Um exemplo com “Pedido”.

<p:dataList var="pedido" value="#{pedidoControle.pedidosAbertos}">
<p:column headerText="Código do Pedido">
				<h:outputText value="#{pedido.codigo}" />
			</p:column>

<p:column headerText="Opcao">
				<p:commandButton title="Alterar" update=":umFormQualquer"     onclick="dialogQualquer.show();"> //botao com a ação que voce quer
                                    <f:setPropertyActionListener value="#{pedido}" target="#{pedidoControle.pedido}" /> // property para passar o pedido da exata linha onde se encontra o botão.
				</p:commandButton>
			</p:column>
</p:dataTable>
J

mas eu uso dois beans um para carregar os arquivos e outro para baixar

meu xhtml está assim:

<?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">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <style type="text/css">
            body {
                background-color: black;
                margin: 0;
                padding: 0;
                font-family: geneva, arial, helvetica, sans-serif;
                font-size:80%;
            }
        </style>
        <title>Files</title>
    </h:head>
    <h:body>
        <h:form enctype="multipart/form-data" id="envia">
            <p:menubar>  
                <p:menuitem value="Home"       url="/faces/index.xhtml"     icon="ui-icon-home" />  
                <p:menuitem value="Files"      url="/faces/files.xhtml"     icon="ui-icon-document" /> 
                <p:menuitem value="Download"   url="/faces/download.xhtml"  icon="ui-icon-circle-arrow-s" /> 
            </p:menubar>  
            <br></br>
            <p:dataTable var="file" value="#{lsBean.processFiles()}">  
                <p:column headerText="Name">  
                    <h:outputText value="#{file.name}" />  
                </p:column>  

                <p:column headerText="Path">  
                    <h:outputText value="#{file.path}" />  
                </p:column>  

                <p:column headerText="Size">  
                    <h:outputText value="#{file.size}" />  
                </p:column>  

                <p:column headerText="Download">  
                    <p:commandButton id="downloadLink" value="Download" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop)"> 
                        <f:setPropertyActionListener value="#{file.path}"  
                                                     target="#{fileDownloadController.path}" />  
                        <p:fileDownload  value="#{fileDownloadController.file}" />  
                    </p:commandButton>
                </p:column> 
            </p:dataTable>  
            <p:growl id="messages" showDetail="true"/>  
        </h:form>
        <script type="text/javascript">  
            function start() {  
                statusDialog.show();  
            }  
  
            function stop() {  
                statusDialog.hide();  
            }  
        </script>  
    </h:body>
</html>
J

resolvido…
passei para um bean so.
valeu pela ajuda

Criado 3 de outubro de 2012
Ultima resposta 3 de out. de 2012
Respostas 5
Participantes 2