PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Upload de arquivos - JSF + Hibernate + MySQL #519340

09/05/2015

0

Olá pessoal!

Preciso fazer upload de arquivos (.doc, .pdf, .jpg, etc.) e também poder visualizá-los. Até encontrei um código e coloquei no meu projeto, mas não está funcionando. Como sou iniciante, está difícil resolver o problema. Alguém poderia me ajudar?

Segue código:

ArquivosCliente
@Entity
public class ArquivosCliente implements Serializable {
    
    private static final long serialVersionUID = -5350255923194238644L;
    
    private Integer codigo;
    private String tipodoc;
    private String descricao;
    private Date datainclusao = new Date();
    private Cliente cliente;

    @Id
    @GeneratedValue
    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getTipodoc() {
        return tipodoc;
    }

    public void setTipodoc(String tipodoc) {
        this.tipodoc = tipodoc;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
   
    @Temporal(TemporalType.DATE)
    public Date getDatainclusao() {
        return datainclusao;
    }

    public void setDatainclusao(Date datainclusao) {
        this.datainclusao = datainclusao;
    }

    @ManyToOne
    @JoinColumn(name = "codcliente", nullable = false)    
    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 53 * hash + Objects.hashCode(this.codigo);
        hash = 53 * hash + Objects.hashCode(this.tipodoc);
        hash = 53 * hash + Objects.hashCode(this.descricao);       
        hash = 53 * hash + Objects.hashCode(this.datainclusao);
        hash = 53 * hash + Objects.hashCode(this.cliente);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final ArquivosCliente other = (ArquivosCliente) obj;
        if (!Objects.equals(this.codigo, other.codigo)) {
            return false;
        }
        if (!Objects.equals(this.tipodoc, other.tipodoc)) {
            return false;
        }
        if (!Objects.equals(this.descricao, other.descricao)) {
            return false;
        }        
        if (!Objects.equals(this.datainclusao, other.datainclusao)) {
            return false;
        }
        if (!Objects.equals(this.cliente, other.cliente)) {
            return false;
        }
        return true;
    }  
}


ArquivosClienteDAO
public interface ArquivosClienteDAO {
    public void atualizar(ArquivosCliente arquivosCliente);
    public void salvar(ArquivosCliente arquivosCliente);    
    public void excluir(ArquivosCliente arquivosCliente);
    public ArquivosCliente carregar(Integer codigo);
    public List<ArquivosCliente> listar();    
}


ArquivosClienteDAOHibernate
public class ArquivosClienteDAOHibernate implements ArquivosClienteDAO {

    private Session sessao;
    public void setSessao(Session sessao) {
        this.sessao = sessao;
    }

    @Override
    public void atualizar(ArquivosCliente ac) {
        this.sessao.update(ac);
    }
    
    @Override
    public void excluir(ArquivosCliente ac) {
        this.sessao.delete(ac);
    } 
    
    @Override
    public void salvar(ArquivosCliente ac) {
        this.sessao.save(ac);
    }
    
    @Override
    public ArquivosCliente carregar(Integer codigo) {
        return (ArquivosCliente) this.sessao.get(ArquivosCliente.class, codigo);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<ArquivosCliente> listar() {
        return this.sessao.createCriteria(ArquivosCliente.class).list();
    }    
}


ArquivosClienteRN
public class ArquivosClienteRN {

    private final ArquivosClienteDAO arquivosClienteDao;
    
    public ArquivosClienteRN() {
        this.arquivosClienteDao = DAOFactory.criarArquivosClienteDao();
    }
    
    public void excluir(ArquivosCliente ac) {
        this.arquivosClienteDao.excluir(ac);
    }
    
    public void salvar(ArquivosCliente ac) {
	Integer codigo = ac.getCodigo();
	if (codigo == null || codigo == 0) {
            this.arquivosClienteDao.salvar(ac);
	} else {
            this.arquivosClienteDao.atualizar(ac);
	}
    }    

    public List<ArquivosCliente> listar() {
	return this.arquivosClienteDao.listar();
    }
    
    public ArquivosCliente carregar(Integer codigo) {
        return this.arquivosClienteDao.carregar(codigo);
    }
        
}


ArquivosClienteBean
@ManagedBean(name = "arquivosClienteBean")
@RequestScoped
public class ArquivosClienteBean {
    
    private ArquivosCliente arquivosCliente = new ArquivosCliente();
    private List<ArquivosCliente> lista;  
    
    private static byte[] arquivo;
    private static String nomeArquivo;
    
    public void uploadAttachment(FileUploadEvent event){
        UploadedFile file = event.getFile();
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        String txtField = ec.getRequestParameterMap().get("myform:txtField");
        String filePath = ec.getRealPath(String.format("/tmp/%s",file.getFileName()));
        try {
            FileOutputStream fos = new FileOutputStream(filePath);
            fos.write(file.getContents());
            fos.flush();
            fos.close();
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,String.format("Arquivo carregado: %s ", file.getFileName()),
                String.format("Mensagem: %s", txtField)));
    }     
    
    public String novo() {
        this.arquivosCliente = new ArquivosCliente();
        return "/restrito/cadastrararquivoscliente";
    }    
 
    public String editar() {
        return "/restrito/cadastrararquivoscliente";
    }  
    
    public String salvar() {
        FacesContext facesContext = FacesContext.getCurrentInstance();  
        
        ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
        arquivosClienteRN.salvar(this.arquivosCliente);
        FacesMessage facesMessage = new FacesMessage("Arquivo cadastrado com sucesso!");
        facesContext.addMessage(null, facesMessage);
        return null;      
    }  
    
    public String excluir() {
        
        ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
        arquivosClienteRN.excluir(this.arquivosCliente);
        
        this.lista = null;
        return null;
    } 

    public ArquivosCliente getArquivosCliente() {
        return arquivosCliente;
    }

    public void setArquivosCliente(ArquivosCliente arquivosCliente) {
        this.arquivosCliente = arquivosCliente;
    }

    public List<ArquivosCliente> getLista() {
        if (this.lista == null) {
            ArquivosClienteRN arquivosClienteRN = new ArquivosClienteRN();
            this.lista = arquivosClienteRN.listar();
        }
        return lista;
    }   
}


Formulário Cadastro Arquivo Cliente
<h:form enctype="multipart/form-data" acceptcharset="ISO-8859-1">
            
            <h1>Novo arquivo do cliente</h1> 
                                
            <p:messages id="messages" autoUpdate="true" closable="true" />        
        
            <p:toolbar style="margin-top: 20px">
                <p:toolbarGroup>
                    <p:button value="Novo" outcome="/restrito/cadastrararquivocliente" icon="ui-icon-plusthick"/>
                    <p:commandButton action="#{arquivosClienteBean.salvar()}" value="Salvar" ajax="false" update="messages" icon="ui-icon-disk"/>
                </p:toolbarGroup>
                <p:toolbarGroup align="right">
                    <p:button value="Voltar" outcome="/restrito/cadastrarcliente" icon="ui-icon-arrowreturnthick-1-w"/>
                </p:toolbarGroup>            
            </p:toolbar>
            
            <br/><br/>
            
            <p:panel header="Dados do Arquivo">

                <h:inputHidden id="codigo" value="#{arquivosClienteBean.arquivosCliente.codigo}" />
                <h:inputHidden id="codcliente" value="#{arquivosClienteBean.arquivosCliente.cliente.codigo}" />
                
                <h:panelGrid columns="2" style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo" cellpadding="3">
                    
                <h:outputText value="Cliente:" />
                <p:inputText id="cliente" value="#{arquivosClienteBean.arquivosCliente.cliente.nome}" required="true" size="60" />                
                
                <h:outputText value="Tipo de Documento:" />
                <p:selectOneMenu id="tipo" value="#{arquivosClienteBean.arquivosCliente.tipodoc}" required="true" requiredMessage="Tipo de Documento é obrigatório.">
                    <f:selectItem itemLabel="CPF" itemValue="CPF" />
                    <f:selectItem itemLabel="CNPJ" itemValue="CNPJ" />
                    <f:selectItem itemLabel="RG" itemValue="RG" />
                    <f:selectItem itemLabel="CNH" itemValue="CNH" />
                    <f:selectItem itemLabel="CONTRATO SOCIAL" itemValue="CONTRATO SOCIAL" />
                    <f:selectItem itemLabel="COMPROV. RESIDÊNCIA" itemValue="COMPROV. RESIDÊNCIA" />
                    <f:selectItem itemLabel="OUTROS" itemValue="OUTROS" />
                </p:selectOneMenu>
                        
                <h:outputText value="Descrição:" />
                <p:inputText id="descricao" value="#{arquivosClienteBean.arquivosCliente.descricao}" required="true" size="50" requiredMessage="Descrição é obrigatória."/>
                        
                <h:outputLabel value="Arquivo:" />
                <p:fileUpload id="arquivo" update="arquivo" fileUploadListener="#{arquivosClienteBean.editar()}" mode="simple" />                            
                    <h:outputLabel/>
                </h:panelGrid>         
            </p:panel>     
        </h:form>
Sgrandini

Sgrandini

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar