Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Vinicius Navarini

Não exibe imagens em jsf gravadas no banco postgres

Recommended Posts

Olá, estou precisando de ajuda, estou gravando imagens no banco postgres com JSF e Prime Faces, mas não estou conseguindo de jeito nenhum exibir elas na tela, por favor alguem pode me ajudar? segue os códigos...

@Entity
public class Foto implements Serializable {
@Version
private Integer versao;

@Id
@SequenceGenerator(name = "FotoId", allocationSize = 1, sequenceName = "FotoId")
@GeneratedValue(generator = "FotoId", strategy = GenerationType.SEQUENCE)
private Integer id;

@Column(name = "FOTO_DESCRICAO")
private String descricao;

@Lob
@Column(name = "FOTO_IMAGEM")
private byte[] imagem;

@ManyToOne
@JoinColumn(name = "fotoCobertura", referencedColumnName = "id")
private FotoCobertura fotoCobertura;

public Foto() {

}

@Entity
public class FotoCobertura implements Serializable {
@Version
private Integer versao;

@Id
@SequenceGenerator(name = "FotoCoberturaId", allocationSize = 1, sequenceName = "FotoCoberturaId")
@GeneratedValue(generator = "FotoCoberturaId", strategy = GenerationType.SEQUENCE)
private Integer id;

@NotEmpty(message = "O nome deve ser informado!")
@Length(max = 60, min = 3, message = "O nome deve ter entre 3 e 60 caracteres!")
@Column(length = 60, nullable = false)
private String descricao;

public FotoCobertura() {
}

@ManagedBean
@SessionScoped
public class FotoEventoControle implements Serializable {

private List<FotoCobertura> listaCobertura;
private FotoCobertura fotoCobertura = new FotoCobertura();
private FotoCobertura fotoCoberturaSelecionada;
private Foto foto = new Foto();
private List<Foto> fotos;
private String filtro = "";
private String ordemAtual = "descricao";
private Map<String, String> listaOrdem = new HashMap<String, String>();
protected Session session;

public FotoEventoControle() {

listaOrdem.put("Descrição", "descricao");
listaOrdem.put("Código", "id");
}

public void salvaCobertura() {

EntityManager em = GerarEntityManager.getInstance().getEntityManager();
em.getTransaction().begin();
em.merge(fotoCobertura);
em.getTransaction().commit();
em.close();
}

public void salvaFoto() {

EntityManager em = GerarEntityManager.getInstance().getEntityManager();
em.getTransaction().begin();
em.merge(foto);
em.getTransaction().commit();
em.close();

}


public void processFileUpload(FileUploadEvent uploadEvent) {

try {
foto.setFotoCobertura(fotoCoberturaSelecionada);
foto.setImagem(uploadEvent.getFile().getContents());
} catch (Exception ex) {
ex.printStackTrace();
}

}

public void listaFotosCobertura() {

try {
ServletContext sContext = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();

fotos = listByCobertura(fotoCoberturaSelecionada.getId());

File folder = new File(sContext.getRealPath("/temp"));
if (!folder.exists())
folder.mkdirs();

for (Foto f : fotos) {
String nomeArquivo = f.getId() + ".jpg";
String arquivo = sContext.getRealPath("/temp") + File.separator
+ nomeArquivo;

criaArquivo(f.getImagem(), arquivo);
}
} catch (Exception ex) {
ex.printStackTrace();
}

}

private void criaArquivo(byte[] bytes, String arquivo) {
FileOutputStream fos;

try {
fos = new FileOutputStream(arquivo);
fos.write(bytes);

fos.flush();
fos.close();
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}


public List<Foto> listByCobertura(Integer ID) {
session = HibernateUtil.getSessionfactory().openSession();

try {
return session.createCriteria(Foto.class, "f")
.createAlias("fotoCobertura", "c")
.add(Restrictions.eq("c.id", ID)).list();
} catch (HibernateException ex) {
ex.printStackTrace();
} finally {
session.close();
}

return null;
}

public List<FotoCobertura> getListaCobertura() {
String where = "";
if (filtro.length() > 0) {
where = "where upper(cast(" + ordemAtual + " as string)) like '%"
+ filtro.toUpperCase() + "%' ";
}

EntityManager em = GerarEntityManager.getInstance().getEntityManager();
List<FotoCobertura> list = em.createQuery(
"from FotoCobertura " + where + " order by " + ordemAtual)
.getResultList();

return list;
}

<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html" locale="#{controleLocale.localeAtual}"
encoding="#{controleLocale.encodingAtual}">
<h:head>
<link type="text/css" rel="stylesheet"
href="/JavaServerFaces/faces/javax.faces.resources/css.css?ln=css" />
<title></title>
</h:head>

<h:body>
<h:outputStylesheet library="css" name="css.css" />

<p:ajaxStatus
style="width:64px;height:64px;position:fixed;right:5px;bottom:5px">
<f:facet name="start">
<p:graphicImage value="/resources/imagens/outros/loading.gif" />
</f:facet>

<f:facet name="complete">
<h:outputText value="" />
</f:facet>
</p:ajaxStatus>

<h:form id="form" enctype="multipart/form-data">
<p:growl id="msgs" showDetail="false" showSummary="true" />

<p:panel>
<h:panelGrid columns="2">
<h:outputText value="Nome:" />
<p:inputText value="#{fotoEventoControle.fotoCobertura.descricao}" />

<p:commandButton value="Salvar" action="#{fotoEventoControle.salvaCobertura()}"
update=":form:msgs, :form:dtCobertura, :form" />
<p:commandButton value="Limpar" onclick="form.reset()" />
</h:panelGrid>
</p:panel>

<p:dataTable id="dtCobertura" value="#{fotoEventoControle.listaCobertura}" var="c"
style="text-align: left;width:100%" emptyMessage="Nenhum item cadastrado.">

<p:column headerText="ID" style="font-weight: bold;">
<h:outputText value="#{c.id}" />
</p:column>

<p:column headerText="Descrição" width="400" style="font-weight: bold;">
<h:outputText value="#{c.descricao}" />
</p:column>

<p:column >
<p:commandButton id="addButton" update=":form:infoFoto"
oncomplete="fotoDialog.show()" icon="ui-icon-plus"
title="Adicionar imagens">
<f:setPropertyActionListener value="#{c}"
target="#{fotoEventoControle.fotoCoberturaSelecionada}" />
</p:commandButton>

<p:spacer width="10" />

<p:commandButton id="showButton" update=":form:infoCobertura"
oncomplete="coberturaDialog.show()" icon="ui-icon-search"
title="Visualizar imagens" action="#{fotoEventoControle.listaFotosCobertura}">
<f:setPropertyActionListener value="#{c}"
target="#{fotoEventoControle.fotoCoberturaSelecionada}" />
</p:commandButton>
</p:column>
</p:dataTable>

<p:dialog header="Detalhes da cobertura de evento" widgetVar="coberturaDialog"
position="top" resizable="false" id="coberturaDlg" showEffect="fade"
hideEffect="explode" modal="true" draggable="true" maximizable="true"
minimizable="true">

<h:panelGrid id="infoCobertura" columns="2" style="margin:0 auto;">

<p:galleria var="f" value="#{fotoEventoControle.fotos}" effect="slide"
effectSpeed="100" panelHeight="250" panelWidth="500"
frameHeight="70" frameWidth="160" filmstripPosition="bottom"
showOverlays="true">

<p:graphicImage value="/temp/#{f.id}.jpg" cache="false" width="500"
height="250" />

</p:galleria>
</h:panelGrid>
</p:dialog>

<p:dialog header="Adicionar imagens" widgetVar="fotoDialog"
position="top" resizable="false" id="fotoDlg" showEffect="fade"
hideEffect="explode" modal="true" width="590">

<h:panelGrid id="infoFoto" columns="2">

<h:outputText value="Foto: " />
<p:fileUpload fileUploadListener="#{fotoEventoControle.processFileUpload}"
label="Escolher" cancelLabel="Cancelar" sizeLimit="900000"
invalidSizeMessage="Imagem muito grande" auto="true"
invalidFileMessage="Tipo de imagem não suportado"
allowTypes="/(\.|\/)(jpe?g|png)$/" />

<h:outputText value="Descrição: " />
<p:inputText value="#{fotoEventoControle.foto.descricao}" />

<p:commandButton value="Adicionar" icon="ui-icon-plus"
action="#{fotoEventoControle.salvaFoto()}" update="infoFoto, form" />

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
Entre para seguir isso  

×
×
  • Criar Novo...