Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Tem como adicionar uma foto para o usuario e quando o usuario logar, mostrar a foto?

Opa to em um projeto aqui, e queria implementar, queria fazer algo como quando cadastrar um novo usuario que tenha como adicionar uma foto também, e quando o usuario logar mostrar a foto do usuario que estiver logado, isso é possivel?

7 respostas

é possível sim alisson,

aqui vai uma possível solução:

1- No banco de dados você deve criar uma tabela que possui os campos do usuário e um atributo do tipo BLOB

a- se você cria seu banco na mão fica mais ou menos assim:

CREATE TABLE usuario (
  `loginUser` VARCHAR(200) NOT NULL,
  `passwordUser` VARCHAR(250) NOT NULL,
  `imageUser` MEDIUMBLOB NULL,
  PRIMARY KEY (`loginUser`)
)

b- se você usa JPA fica assim:

//... restante dos atribrutos
@Lob
    @Column(name = "imageUser")
    private byte[] imageUser;
// ... restante da classe;

Este atributo BLOB é um array de bytes, onde sua imagem será decomposta em uma longa sequência binária que posteriormente você poderá recupera-la e transforma-la em uma imagem novamente.

O primefaces ajuda bastante nesta tarefa, veja um exemplo de como utiliza-lo para fazer essa conversão utilizando a ferramenta de "upload" deles.

trecho do xhtml:

 <p:fileUpload id="Imagem"  required="true" auto="false" sizeLimit="300000" requiredMessage="A foto principal é obrigatória"  update="@form" fileLimit="1" fileUploadListener="#{ManageUserManagedBean.uploadImagemUsuario}" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"  />
 <p:graphicImage id="imagemUsuario" width="110" height="110" cache="false" class="img-thumbnail" value="#{ManageUserManagedBean.imagemAtual}" />

Métodos do Backend bean para suportar tais ações :

 public StreamedContent getImagemAtual() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {
            return new DefaultStreamedContent(new ByteArrayInputStream(actualUser.getImageUser())); // nesta parte do código ele pega o array de bytes e converte em uma imagem de verdade.
        }
    }

    public void uploadImagemUsuario(FileUploadEvent event) {
        actualUser.setImageUser(event.getFile().getContents()); // aqui ele pega a imagem que o usuário inseriu e transforma em um array de Bytes para poder ser salvo no banco de dados
    }

Oi Vinisto primeiramente obrigado por me ajudar, mais fiquei perdido aqui.

<p:fileUpload id="Imagem"  required="true" auto="false" sizeLimit="300000" requiredMessage="A foto principal é obrigatória"  update="@form" fileLimit="1" fileUploadListener="#{ManageUserManagedBean.uploadImagemUsuario}" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"  />

na parte do

fileUploadListener="#{ManageUserManagedBean.uploadImagemUsuario}"

Nessa parte fiquei perdido, aonde que to ligando aqui? Meu projeto tá desse jeito, se poder me ajudar novamente ficarei grato.

mport java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.OneToOne;

@Entity
@SuppressWarnings("serial")
public class Usuario implements Serializable{


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo;
    private String login;
    private String senha;
    private String confirmarSenha;
    @Lob
    private byte[] imagem;
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "perfil_codigo")
    private Perfil perfil = new Perfil();

depois meu controller.

@Named
@ViewScoped
@SuppressWarnings("serial")
public class CadastroUsuarioBean implements Serializable {

    @Inject
    private Usuario usuario;
    @Inject
    private UsuarioDao usuarioDao;
    @Inject
    private Perfil perfil;
    @Inject
    private PerfilDao perfilDao;

    @Transacao
    public void adicionarUsuario() {
        if (this.usuario.getCodigo() == null) {
            if (verificarSenhaComConfirmarSenha()) {
                this.perfilDao.salvar(perfil);
                Perfil perfilCodigo = this.perfilDao.buscarPorCodigo(perfil.getCodigo());
                this.usuario.setPerfil(perfilCodigo);
                this.usuarioDao.salvar(usuario);
                MensagemUtil
                        .mensagemSalvoComSucesso("Usuario salvo com sucesso");
            } else {
                MensagemUtil.mensagemError("Usuario ou senha invalido");
            }
        } else {
            this.perfilDao.editar(perfil);
            this.usuarioDao.editar(usuario);
            MensagemUtil.mensagemSalvoComSucesso("Usuario editado com sucesso");
        }
        this.usuario = new Usuario();
        this.perfil = new Perfil();
    }

    @Transacao
    public void remover() {
        this.usuarioDao.excluir(usuario);
        this.perfilDao.excluir(perfil);
        MensagemUtil.mensagemSalvoComSucesso("Usuario excluido com sucesso");
    }

    public void carregarExclusao(Usuario usuario) {
        this.usuario = usuario;
        this.perfil = usuario.getPerfil();
        System.out.println(usuario.toString());
    }

    public Boolean verificarSenhaComConfirmarSenha() {
        return this.usuario.getSenha().equals(this.usuario.getConfirmarSenha()) ? true : false;
    }

    public NivelDoAcesso[] getNivelAcesso() {
        return NivelDoAcesso.values();
    }

    public void carregar(Usuario usuario) {
        this.usuario = usuario;
        this.perfil = usuario.getPerfil();
        System.out.println(this.usuario.toString());
    }

    public void novo() {
        this.usuario = new Usuario();
        this.perfil = new Perfil();
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Perfil getPerfil() {
        return perfil;
    }

    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

}

e depois meu xhtml.

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui" template="/WEB-INF/template.xhtml">

    <ui:define name="title">
           Cadastro de usuario
       </ui:define>

    <ui:define name="content">
        <div class="ui-g">
            <div class="ui-g-12">
                <div class="ui-fluid">
                    <p:growl id="mensagem" life="6000" />
                    <h:form id="tabelaUsuario">
                        <p:dataTable reflow="true" value="#{usuarioBean.listaUsuarios}"
                            var="usuario" paginator="true" rows="5">
                            <f:facet name="footer">
                                <p:commandButton value="Inserir" icon="fa fa-fw fa-plus"
                                    style="width: 100px" styleClass="secondary"
                                    onclick="PF('dlgInserir').show();"
                                    actionListener="#{cadastroUsuarioBean.novo}"
                                    update=":formularioCadastro" />
                            </f:facet>
                            <p:column headerText="Código">
                                <p:outputLabel value="#{usuario.codigo}" />
                            </p:column>
                            <p:column headerText="Usuario">
                                <p:outputLabel value="#{usuario.login}" />
                            </p:column>
                            <p:column headerText="Senha">
                                <p:outputLabel value="#{usuario.senha}" />
                            </p:column>
                            <p:column headerText="ConfirmaSenha">
                                <p:outputLabel value="#{usuario.confirmarSenha}" />
                            </p:column>
                            <p:column headerText="Permissão">
                                <p:outputLabel value="#{usuario.perfil.nivelAcesso}" />
                            </p:column>
                            <p:column headerText="Opção">
                                <p:panelGrid columns="2"
                                    columnClasses="ui-grid-col-6,ui-grid-col-6" layout="grid"
                                    styleClass="ui-panelgrid-blank">
                                    <p:commandButton title="Editar" icon="fa fa-fw fa-edit"
                                        styleClass="secondary"
                                        actionListener="#{cadastroUsuarioBean.carregar(usuario)}"
                                        oncomplete="PF('dlgEditar').show();"
                                        update=":formularioEditar" />
                                    <p:commandButton title="Excluir" icon="fa fa-fw fa-remove"
                                        styleClass="secondary"
                                        actionListener="#{cadastroUsuarioBean.carregarExclusao(usuario)}"
                                        oncomplete="PF('dlgExcluir').show();"
                                        update=":formularioExcluir" />
                                </p:panelGrid>
                            </p:column>
                        </p:dataTable>
                    </h:form>
                </div>

                <p:dialog responsive="true" appendTo="@(body)" resizable="false"
                    closable="true" showEffect="slide" hideEffect="drop" modal="true"
                    draggable="false" widgetVar="dlgInserir"
                    header="Cadastro de usuario">
                    <h:form id="formularioCadastro">
                        <p:panelGrid columns="2"
                            columnClasses="ui-grid-col-6,ui-grid-col-6" layout="grid"
                            styleClass="ui-panelgrid-blank">
                            <p:outputLabel value="Login: " for="login" />
                            <p:inputText id="login" required="true"
                                requiredMessage="O campo login é obrigatório"
                                value="#{cadastroUsuarioBean.usuario.login}" />
                            <p:outputLabel value="Senha: " for="senha" />
                            <p:password required="true" id="senha"
                                value="#{cadastroUsuarioBean.usuario.senha}" feedback="false"
                                redisplay="true" requiredMessage="O campo senha é obrigatório" />
                            <p:outputLabel value="Confirmar senha: " for="confirmarSenha" />
                            <p:password id="confirmarSenha" required="true" redisplay="true"
                                requiredMessage="O campo confimarSenha é obrigatório"
                                value="#{cadastroUsuarioBean.usuario.confirmarSenha}"
                                feedback="false" />
                            <p:outputLabel value="Acesso ao sistema: " for="acessoSistema" />
                            <p:selectOneMenu id="acessoSistema"
                                value="#{cadastroUsuarioBean.perfil.nivelAcesso}"
                                required="true" requiredMessage="Nivel de acesso é obrigatório">
                                <f:selectItem itemValue="" itemLabel="SELECIONE..." />
                                <f:selectItems value="#{cadastroUsuarioBean.nivelAcesso}" />
                            </p:selectOneMenu>
                        </p:panelGrid>

                        <div class="ui-fluid">
                            <p:panelGrid columns="2"
                                columnClasses="ui-grid-col-6,ui-grid-col-6" layout="grid"
                                styleClass="ui-panelgrid-blank">
                                <p:commandButton value="Salvar" styleClass="secondary"
                                    actionListener="#{cadastroUsuarioBean.adicionarUsuario}"
                                    update=":mensagem :tabelaUsuario formularioCadastro"
                                    icon="fa fa-fw fa-save" />
                                <p:commandButton value="Voltar" styleClass="secondary"
                                    onclick="PF('dlgInserir').hide();" immediate="true" />
                            </p:panelGrid>
                        </div>
                    </h:form>
                </p:dialog>

Oque deveria fazer para seu código funcionar no meu projeto? Obrigado

solução!

Neste trecho você deve inserir um campo para colocar o listener para upload de arquivos (fotos):

 <p:panelGrid columns="2"
                            columnClasses="ui-grid-col-6,ui-grid-col-6" layout="grid"
                            styleClass="ui-panelgrid-blank">

<p:fileUpload id="Imagem"  required="true" auto="false" sizeLimit="300000" requiredMessage="A foto principal é obrigatória"  update="@form" fileLimit="1" fileUploadListener="#{ManageUserManagedBean.uploadImagemUsuario}" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"  />
 <p:graphicImage id="imagemUsuario" width="110" height="110" cache="false" class="img-thumbnail" value="#{ManageUserManagedBean.imagemAtual}" />


<p:outputLabel value="Login: " for="login" />
                            <p:inputText id="login" required="true"
                                requiredMessage="O campo login é obrigatório"
                                value="#{cadastroUsuarioBean.usuario.login}" />
                            <p:outputLabel value="Senha: " for="senha" />
                            <p:password required="true" id="senha"
                                value="#{cadastroUsuarioBean.usuario.senha}" feedback="false"
                                redisplay="true" requiredMessage="O campo senha é obrigatório" />
                            <p:outputLabel value="Confirmar senha: " for="confirmarSenha" />
                            <p:password id="confirmarSenha" required="true" redisplay="true"
                                requiredMessage="O campo confimarSenha é obrigatório"
                                value="#{cadastroUsuarioBean.usuario.confirmarSenha}"
                                feedback="false" />
                            <p:outputLabel value="Acesso ao sistema: " for="acessoSistema" />
                            <p:selectOneMenu id="acessoSistema"
                                value="#{cadastroUsuarioBean.perfil.nivelAcesso}"
                                required="true" requiredMessage="Nivel de acesso é obrigatório">
                                <f:selectItem itemValue="" itemLabel="SELECIONE..." />
                                <f:selectItems value="#{cadastroUsuarioBean.nivelAcesso}" />
                            </p:selectOneMenu>
                        </p:panelGrid>

Logo depois você insere no seu backend bean os metodos indicados:

 public StreamedContent getImagemAtual() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {
            return new DefaultStreamedContent(new ByteArrayInputStream(cadastroUsuarioBean.usuario.getImageUser())); // nesta parte do código ele pega o array de bytes e converte em uma imagem de verdade.
        }
    }

    public void uploadImagemUsuario(FileUploadEvent event) {
        cadastroUsuarioBean.usuario.setImageUser(event.getFile().getContents()); // aqui ele pega a imagem que o usuário inseriu e transforma em um array de Bytes para poder ser salvo no banco de dados
    }

assim ao salvar o JPA persistirá o blob junto com o objeto de usuário

Para salvar a imagem no bando de dados então basta esse metodo?

   public void uploadImagemUsuario(FileUploadEvent event) {
        cadastroUsuarioBean.usuario.setImageUser(event.getFile().getContents()); // aqui ele pega a imagem que o usuário inseriu e transforma em um array de Bytes para poder ser salvo no banco de dados
    }

Depois o outro metodo serve para recuperar a imagem?

public StreamedContent getImagemAtual() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {
            return new DefaultStreamedContent(new ByteArrayInputStream(cadastroUsuarioBean.usuario.getImageUser())); // nesta parte do código ele pega o array de bytes e converte em uma imagem de verdade.
        }
    }

Aqui ele converter a imagem de byte para imagem de verdade? Seria algo assim?

Isso msm... estes métodos convertem a imagem em um array de bytes.

Assim como vc preenche os outros campos do backend bean, vc atribui o vetor de bytes ao objeto que vai ser salvo.

Ao executar a função de salvar... ele salva a imagem junto.

Vinistos correto, eu consegui salvar a imagem com o metodo que você passou, ela fica salva como BLOB mesmo kkk, mais na hora de mostrar a imagem, recebo o tal erro.

ago 12, 2017 11:48:50 PM org.primefaces.application.resource.StreamedContentHandler handle
GRAVE: Error in streaming dynamic resource. Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
ago 12, 2017 11:48:50 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/borracharia] threw exception
java.io.IOException: javax.el.ELException: Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
    at org.primefaces.application.resource.StreamedContentHandler.handle(StreamedContentHandler.java:106)
    at org.primefaces.application.resource.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:95)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:655)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at org.primefaces.application.resource.StreamedContentHandler.handle(StreamedContentHandler.java:70)
    ... 25 more
Caused by: java.lang.NullPointerException
    at java.io.ByteArrayInputStream.<init>(Unknown Source)
    at br.com.borracharia.bean.CadastroUsuarioBean.getImagemAtual(CadastroUsuarioBean.java:75)
    at br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass.getImagemAtual(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
    ... 31 more

ago 12, 2017 11:48:50 PM org.primefaces.application.resource.StreamedContentHandler handle
GRAVE: Error in streaming dynamic resource. Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
ago 12, 2017 11:48:50 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/borracharia] threw exception
java.io.IOException: javax.el.ELException: Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
    at org.primefaces.application.resource.StreamedContentHandler.handle(StreamedContentHandler.java:106)
    at org.primefaces.application.resource.PrimeResourceHandler.handleResourceRequest(PrimeResourceHandler.java:95)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
    at javax.faces.application.ResourceHandlerWrapper.handleResourceRequest(ResourceHandlerWrapper.java:153)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:655)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.el.ELException: Error reading 'imagemAtual' on type br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
    at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at org.primefaces.application.resource.StreamedContentHandler.handle(StreamedContentHandler.java:70)
    ... 25 more
Caused by: java.lang.NullPointerException
    at java.io.ByteArrayInputStream.<init>(Unknown Source)
    at br.com.borracharia.bean.CadastroUsuarioBean.getImagemAtual(CadastroUsuarioBean.java:75)
    at br.com.borracharia.bean.CadastroUsuarioBean$Proxy$_$$_WeldSubclass.getImagemAtual(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
    ... 31 more

Sabe oque que pode ser? Fiz exatamente como você indicou.

<p:column headerText="Foto">
                                <p:graphicImage width="110" height="110"
                                    cache="false" class="img-thumbnail"
                                    value="#{cadastroUsuarioBean.imagemAtual}" />
                            </p:column>

e o metodo.

public StreamedContent getImagemAtual() throws IOException {
        FacesContext context = FacesContext.getCurrentInstance();
        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        } else {
            return new DefaultStreamedContent(new ByteArrayInputStream(this.usuario.getImagem())); 
        }
    }

:((

Consegui aqui irmãozinho mt obrigado!