Ir para conteúdo
Fórum CódigoFonte.net

Vinicius Navarini

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

  1. 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>
×
×
  • Criar Novo...