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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
é 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
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!