PrimeFaces não mostra a imagem "StreamedContent"

23 respostas
E

Pessoal faz uns 5 dias que estou quebrando a cabeça com isso e não consigo resolver, espero contar com vocês

É o seguinte estou usando fileUpload do prime para carregar algumas imagens, até ai tudo bem eu consigo carregar essas imagens, porem na hora de mostrar em um <p:dataGrid a imagem não aparece…

Não sei mais o que fazer

veja o código(código de teste)…

.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Cadastro de Album</title>
    </h:head>
    <f:view>
        <h:body>
            <h:form id="frmGridAlbum">
                <p:growl id="menssagensAlbum"
                         life="3000"/>
                <p:dataTable id="dtAlbuns"
                             widgetVar="dtAlbuns"
                             var="album"
                             value="#{albumMB.albuns}"
                             paginator="true"
                             rows="5"
                             selection="#{albumMB.album}"
                             selectionMode="single"
                             onRowSelectComplete="dlgAlbum.show();"
                             emptyMessage="Nao existe Album cadastrado"
                             style="width:60%"
                             update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dgdFotos, frmCadastroAlbum:clkGravar, frmCadastroAlbum:clkAlterar">
                    <p:column sortBy="#{album.id}"
                              filterBy="#{album.id}">
                        <f:facet name="header">
                            <h:outputText value="Id" />
                        </f:facet>
                        <h:outputText value="#{album.id}" />
                    </p:column>
                    <p:column sortBy="#{album.cliente.nome}"
                              filterBy="#{album.cliente.nome}">
                        <f:facet name="header">
                            <h:outputText value="Cliente" />
                        </f:facet>
                        <h:outputText value="#{album.cliente.nome}" />
                    </p:column>
                </p:dataTable>
                <p:panel style="width:59.2%">
                    <p:commandLink id="clkIncluir"
                                   title="Incluir"
                                   oncomplete="dlgAlbum.show()"
                                   action="#{albumMB.incluir}"
                                   update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dgdFotos, frmCadastroAlbum:clkGravar, frmCadastroAlbum:clkAlterar">
                        <h:graphicImage url="/imagens/novo.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <p:commandLink title="Apagar"
                                   actionListener="#{albumMB.apagar}"
                                   style="margin-left:20px"
                                   update="frmGridAlbum"
                                   oncomplete="dlgAlbum.hide();">
                        <h:graphicImage url="/imagens/apagar.jpg"
                                        style="border:0"/>
                    </p:commandLink>
                    <h:commandLink title="Voltar"
                                   action="#{albumMB.voltar}"
                                   style="margin-left:20px">
                        <h:graphicImage url="/imagens/voltar.jpg"
                                        style="border:0"/>

                    </h:commandLink>
                </p:panel>
            </h:form>
            <h:form id="frmCadastroAlbum">

                <p:dialog id="dlgAlbum"
                          widgetVar="dlgAlbum"
                          header="Album"
                          width="700">
                    <h:outputLabel value="imagem"
                                   for="gi"/>
                    <p:graphicImage id="gi" value="#{albumMB.imagem}"/>
                    <h:panelGrid columns="2">
                        <h:outputLabel value="Cliente:"
                                       for="somCliente" />
                        <h:selectOneMenu id="somCliente"
                                         value="#{albumMB.album.cliente.nome}"
                                         required="true"
                                         requiredMessage="Informe a descricao">
                            <f:selectItems value="#{albumMB.clientes}"
                                           var="cliente"
                                           itemValue="#{cliente.id}"
                                           itemLabel="#{cliente.nome} CPF : #{cliente.cpf}"/>
                        </h:selectOneMenu>
                        <h:outputLabel value="Descricao:"
                                       for="itaDescricao"/>
                        <p:inputTextarea id="itaDescricao"
                                         value="#{albumMB.album.descricao}"
                                         required="true"
                                         requiredMessage="Informe a descricao"/>
                    </h:panelGrid>
                    <p:dataGrid id="dgdFotos"
                                var="imagem"
                                value="#{albumMB.imagens}"
                                columns="2"
                                rows="1"
                                paginator="true"
                                style="width:30%">
                        <p:column>
                               <p:graphicImage id="gii" 
                                               value="#{imagem}"/>
                        </p:column>
                    </p:dataGrid>
                    <h:panelGrid columns="3" >
                        <p:fileUpload id="fudSelecionarFotos"
                                      fileUploadListener="#{albumMB.selecionarFoto}"
                                      multiple="true"
                                      allowTypes="*.jpg;*.png;*.gif;"
                                      description="Images"
                                      update="dgdFotos, gi"
                                      style="margin-right:20px"/>
                        <p:commandLink  id="clkGravar"
                                        title="Gravar"
                                        action="#{albumMB.gravar}"
                                        disabled="#{!empty albumMB.album.id}"
                                        style="margin-right:20px"
                                        update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dgdFotos, frmGridAlbum:menssagensAlbum, frmGridAlbum:dtAlbuns">
                            <h:graphicImage url="/imagens/gravar.jpg"
                                            style="border:0"/>
                        </p:commandLink>
                        <p:commandLink id="clkAlterar"
                                       title="Alterar"
                                       action="#{albumMB.album}"
                                       disabled="#{empty albumMB.album.id}"
                                       update="frmCadastroAlbum:somCliente, frmCadastroAlbum:itaDescricao, frmCadastroAlbum:dgdFotos, frmGridAlbum:menssagensAlbum, frmGridAlbum:dtAlbuns"
                                       style="margin-left:20px">

                            <h:graphicImage url="/imagens/alterar.bmp"
                                            style="border:0"/>

                        </p:commandLink>
                    </h:panelGrid>

                </p:dialog>
            </h:form>
        </h:body>
    </f:view>
</html>

MB

public void selecionarFoto(FileUploadEvent event) throws IOException {
        System.out.println("okkk");

        UploadedFile uf = event.getFile();
        String nomeArquivo = uf.getFileName();
        InputStream is = null;
        Foto foto = new Foto();
        String caminho = "C:"+File.separator+"img"+File.separator+nomeArquivo;
      try {
            is = uf.getInputstream();
            byte[] b = new byte[is.available()];
            InputStream stream = new ByteArrayInputStream(b);
            foto.setNome(nomeArquivo);
            foto.setFoto(b);
            //BufferedImage img = ImageIO.read(event.getFile().getInputstream());
            //File file = new File(caminho);
            //boolean write = ImageIO.write(img, "jpg", file);
            //FileInputStream fi = new FileInputStream(file);
            //System.out.println("escreveu?? " +write);
            this.imagem = new DefaultStreamedContent(stream);
            this.getImagens().add(new DefaultStreamedContent(stream));
            foto.setImagem(new DefaultStreamedContent(stream));
           
           
            //foto.setImagem(new DefaultStreamedContent(stream));
            //foto.setImagem(new DefaultStreamedContent(event.getFile().getInputstream()));
            fotos.add(foto);
            //this.imagem = new DefaultStreamedContent(stream);
            System.out.println("okkk nome"+ foto.getImagem());
            JSFUtil.enviarMenssagemSucesso("Upload realizado com sucesso.");
        } catch (Exception e) {
            e.printStackTrace();
            JSFUtil.enviarMenssagemErro("Erro ao realizar o Upload.");
        } finally {
            try {
                is.close();
            } catch (IOException ex) {
                ex.printStackTrace();
                JSFUtil.enviarMenssagemErro("Erro ao realizar o Upload.");
            }
        }
    }

NÃO DA NENHUM ERRO APENAS NÃO APARECE A IMAGEM,

Ajuda ai pessoal

Obrigado

23 Respostas

E

E

Pessoal uma observação

eu mando imprimir o objeto imagem (StreamedContent)

this.imagem = this.getFoto().getImagem();
  System.out.println("Fotoo "+imagem);

e ele imprimi e o valor impresso é

Fotoo org.primefaces.model.DefaultStreamedContent@8e6591

ou seja o objeto está lá. o prime só não consegui rendereizar este objeto…

preciso de ajuda

E

Iae galera, alguem vai poder me ajudar?

E

Preciso de ajuda ai

T

A id de uma das suas graphic image é gi

Mas o FileUpload manda atualizar a “gii”

<p:fileUpload id="fudSelecionarFotos" fileUploadListener="#{albumMB.selecionarFoto}" multiple="true" allowTypes="*.jpg;*.png;*.gif;" description="Images" update="dgdFotos, gi" style="margin-right:20px"/>

A sua outra graphic imagem tem o ID gii

<p:graphicImage id="gii" value="#{imagem}"/>
Mas ela recebe a value como “imagem” que é a var da sua dataGrid

agora decida oq voce realmente quer atualizar para receber o novo valor imagem (StreamedContent) da MB :wink:

E

É que é o seguinte,isto que eu fiz é para teste…

eu fiz as duas coisas,

o <p:graphicImage id=“gii"
value=”#{imagem}"/>

vem de um lista… no blog quebrandoParadigma o pessoal falou que o dataTable ou dataGrid etc, não suporta lista de
StreamedContent eu queria confirma se isso é verdade com alguem de vcs?
por isso eu não estou atualizando o “gii”…por enquanto deixei de lado…

pra mim atualizando o gi já esta de bom tamanho, porem nem isso ele está fazendo…

Obrigado pela ajuda.

E

?

T

Ainda não tive a oportunidade de testar os componentes que você está a usar.

Atualmente, tive que parar o desenvolvimento de um sistema web e estou dando suporte à um sistema swing em produção.

abraços

E

Okey, pessoal mais alguem pode me ajudar?

V

estou passando por um problema parecido.

no meu caso temos problemas com o file upload também, não é sempre(funciona quando quer…)

estamos com primefaces 2.2.1, e utilizando Spring

toda vez que passo por uma página que possui o elemento p:graphicImage recebo essa excessão

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/aplicacao] threw exception [null] with root cause
java.lang.NullPointerException
	at org.primefaces.application.DynamicContentStreamer.streamDynamicContent(DynamicContentStreamer.java:78)
	at org.primefaces.application.DynamicContentStreamer.beforePhase(DynamicContentStreamer.java:57)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:224)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:95)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:242)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:163)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
12/04/2011 11:41:21 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
	at org.primefaces.application.DynamicContentStreamer.streamDynamicContent(DynamicContentStreamer.java:78)
	at org.primefaces.application.DynamicContentStreamer.beforePhase(DynamicContentStreamer.java:57)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:224)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:95)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:674)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:464)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:401)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:464)
	at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:313)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:177)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
12/04/2011 11:41:21 org.apache.catalina.core.StandardHostValve custom
GRAVE: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/error.jsf]
javax.servlet.ServletException
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:674)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:464)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:401)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:464)
	at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:313)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:177)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:556)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:401)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:242)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:267)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:245)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:260)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
	at org.primefaces.application.DynamicContentStreamer.streamDynamicContent(DynamicContentStreamer.java:78)
	at org.primefaces.application.DynamicContentStreamer.beforePhase(DynamicContentStreamer.java:57)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:224)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:95)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	... 20 more

o bom é que não encontrei resultados na internet e essa exceção não passa por nenhuma classe da nossa aplicação.

caso alguém tiver algo a contribuir, será bem vindo

att
Vitor

O

Estou com o mesmo problema .

Fiz igual esse exemmplo

http://quebrandoparadigmas.com/?p=168

Alguem conseguiu resolver ?

O

Consegui resolver.

O meu ManagedBean estava como ViewScoped, eu troquei para SessionScoped.

Esta funcionando sem problemas agora.

E

O meu não consigo resolver por nada, mais vc está usando o StreamContent? OU esta gravando imagem e setando o caminho
?

O

Sim uso o StreamedContent

segue o codigo abaixo:

Managed Bean

@ManagedBean(name = "cadastroFace")
@SessionScoped
public class CadastroFace extends Face {

        
    private byte[] foto;
    private StreamedContent imagem;  

    public CadastroFace() {
        
    }    

    public StreamedContent getImagem() {        
        return imagem;
    }

    public void setImagem(StreamedContent imagem) {
        this.imagem = imagem;
    }


    public void handleFileUpload(FileUploadEvent event)throws IOException {
        
        //salva a imagen no StreamedContent para ser visualizada antes de salvar no disco
        imagem = new DefaultStreamedContent(event.getFile().getInputstream(), "image/jpeg", event.getFile().getFileName());          
        foto = event.getFile().getContents(); 
    }    
    
    public void salvar() throws Exception { 
             // salva a imagen no disco
            //passo o parametro 'foto' com o bytes gerados no momento do upload da foto
            criaArquivo(foto, "c:/foto/nomeImagen.jpg");
    }
    


    public void criaArquivo(byte[] bytes, String arquivo) throws IOException {
        FileOutputStream fos;        
        fos = new FileOutputStream(arquivo);
        fos.write(bytes);
        fos.close();
    }
}

Pagina web

...
<p:fileUpload   fileUploadListener="#{cadastroFace.handleFileUpload}"  label="Procurar..." auto="true" allowTypes="*.jpg;*.png;*.gif;" update="imagem"  description="Images" multiple="false"/> 

<p:graphicImage value="#{cadastroFace.imagem}" cache="false" width="250" height="200"  id="imagem"/>

<p:commandButton value="Gravar" action="#{cadastroFace.salvar()}"    />
...
O

Além do jar do primefaces é necessário que sejam adicionando dois novos jar nas bibliotecas do seu projeto:

commons-fileupload1.2.2 http://commons.apache.org/fileupload/download_fileupload.cgi

commons-io2.0.1.jar http://commons.apache.org/io/download_io.cgi

e tambén de adicionar essa configuração no xml.

<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class> org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

...
E

Isto já esta configurado.

Obrigado por ajudar

J

dae galera! To na mesma tbm… já configurei web.xml, baixei os commons e nada!

antes travava o upload, agora ele da “HTTP ERROR” em tudo… passei a tarde inteira hj fazendo teste, buscando na net NÃO CONSIGO!

Caso não dê com o primefaces, tem como fazer na mão? usando um input type=“file”?

Netbeans 6.9 - Windows 7 Pro - PrimeFaces 2.1 - Glassfish 3.01

E

O meu upload funciona normal, o que não consigo resolver é em relação ao p:grapicImage que não mostra a imagem de um StreanContent

J

será q vc pode me ajudar então? não sei se é do netbeans (pq os arquivos de configuração ficam em locais diferentes), mas não vai cara! vou postar meus arquivos e se alguem puder corrigir/dar uma dica eu agradeceria muito!

Talvez tenha q fazer algo no sun-web.xml ou web-fragment.xml que o netbeans cria? Alguma configuração no Glassfish?

Só pra confirmar, já importei o commons-io 2.0.1 e o fileupload 1.2.2 tbm. Meu ambiente de desenvolvimento: Netbeans 6.9.1 - Windows 7 Pro - PrimeFaces 2.1 - Hibernate 3 - Glassfish 3.01

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

admin.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" template="./template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html" xmlns="http://www.w3.org/1999/xhtml"
                xmlns:p="http://primefaces.prime.com.tr/ui">

    <ui:define name="mainContent">
        <p:fileUpload fileUploadListener="#{adminBean.handleFileUpload}" update="t2" />
        <h:outputText id="t2" value="#{adminBean.text}" />
    </ui:define>
</ui:composition>

AdminBean.java

@ManagedBean
@RequestScoped
public class AdminBean {

    private String text;

    public void handleFileUpload(FileUploadEvent event) {
        this.text = event.getFile().getFileName();
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}

desde já agradeço!

E

Tenta trocar de requeste para ViewScoped ou SessionScoped

J

Sem chance tbm, nem view nem session… porém, vcs não vão botar fé… heresia agora

não funciona no Firefox 4, não funciona no Firefox 3.6, não funciona no Chrome, não funciona no Opera 11, mas (pasmem) funciona no IE9 e IE8!!! JURO! To de cara!!!

Agora suposição: se funciona em algum browser a questão é o xhtml. Tem alguma coisa de diferente no arquivo de vcs? alguma tag a mais, alguma a menos? um atributo talvez?

as páginas que formam o meu xhtml final são template.xhtml e a admin.xhtml e estão em anexo. Se alguem encontrar algo que chame a atenção e resolva meu problema é só gritar

template.xhtml

<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <f:view>
        <h:head>
            <title>Printer Systemtitle>
        </h:head>
        <h:body>
            <h:outputStylesheet library="css" name="main.css" />
            <h:form id="formMaster">
                <p:layout>
                    <p:layoutUnit position="top" height="150" >
                        <h:form>
                            <p:growl id="growlMsg" />
                            <h:outputText value="Printer System" style="font-size: 16pt"/>
                            <div id="navbar2">
                                <ul>
                                    <li><a href="index.xhtml">User</a></li>
                                    <li><a href="bytime.xhtml">Time</a></li>
                                    <li><a href="byprinter.xhtml">Printer</a></li>
                                    <li><a href="admin.xhtml">Admin</a></li>
                                </ul>
                            </div>
                        </h:form>
                    </p:layoutUnit>
                    <p:layoutUnit position="center">
                        <h:form id="forContent">
                            <ui:insert id="mainContent" name="mainContent">conteudo principal</ui:insert>
                        </h:form>
                    </p:layoutUnit>
                </p:layout>
            </h:form>
        </h:body>
    </f:view>
</html>

admin.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets" template="./template.xhtml"
                xmlns:h="http://java.sun.com/jsf/html" xmlns="http://www.w3.org/1999/xhtml"
                xmlns:p="http://primefaces.prime.com.tr/ui">

    <ui:define name="mainContent" id="adminComponet">
        <p:fileUpload id="up1" fileUploadListener="#{adminBean.handleFileUpload}" allowTypes="*.txt;" description="*.txt" sizeLimit="512000" update="t2" />
        <h:outputText id="t2" value="#{adminBean.text}" />
    </ui:define>
</ui:composition>
E

O meu funciona no IE e no Chrome no firefox não funciona mesmo.

Está igual o meu,sinceramento tem componente e varios “eventos” que funciona “variante” em cada browser estou com varios problemas deste tipo
agora não sei se são “bugs” do prime ou outra coisa que foge do meu escopo de raciocinio rsrs;

R

Olá pessoal,

Orlando, parabéns pelo exemplo. Eu estava com um exemplo similar ao seu há tempos atrás e agora que estou na fase do meu projeto da pós onde preciso utilizar este componente, adivinha o que aconteceu? Não funcionava de jeito nenhum, rs. Me bati um monte e descobri o que estava errado.

Pensei em primeiro lugar que era alguma coisa relacionada a versão do prime pois estava rolando algumas exceptions e nem acessar os métodos estava. Bom, ai fui no arquivo web.xml e revisei as instruções conforme vocês postaram. Só que aí vem uma dica muito importante que quando eu fiz o exemplo não estava usando este arquivo web.xml.

No teste que fiz onde tudo ocorreu bem eu não tinha a instrução abaixo declarada:

RODA OK !

&lt;context-param&gt;
	  &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
	  &lt;param-value&gt;server&lt;/param-value&gt;
	&lt;/context-param&gt;

NÃO RODA !!!

&lt;context-param&gt;
	  &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
	  &lt;param-value&gt;client&lt;/param-value&gt;
	&lt;/context-param&gt;

Mantive então a instrução como server. Porém mantive com embasamento, não deixei assim só porque funcionou. Pesquisem sobre pois as diferenças são relevantes entre server e client. No meu caso, deixar como server não terei problemas para o meu propósito.

[/b]
Gostaria de saber se realmente precisamos manter o managed bean como session ?

Obrigado e espero que a dica ai tb ajude vcs !!

Sds,
Rodrigo Bortolon

A configuração

Criado 28 de março de 2011
Ultima resposta 8 de set. de 2011
Respostas 23
Participantes 6