1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Excluindo da dataTable com primefaces e confirmDialog - Parte 2

Bom dia, pessoal. estou aqui na luta para entender como implementar o CRUD. Segui esse tutorial passo a passo:

http://jamacedo.com/2010/06/crud-jsf-2-0-hibernate-exemplo-gerenciando-livros-2/

Ele rodou beleza aqui. Então, estou tentando implementar a lógica dele em meu sistema.

Estou recebendo sempre o mesmo erro: " Target Unreachable, identifier 'usuarioController2' resolved to null "

e não estou conseguindo ver o porquê. Todos os métodos que chamo pela pagina xhtml da classe "UsuarioController2" aparecem esse mesmo erro acima.

Já na classe "UsuarioController", o método salvar funcioona direitinho. Vejam a diferença do código das duas classes:

UsuarioController:

package br.com.sgcon.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.servlet.ServletContext;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.primefaces.event.FileUploadEvent;
import br.com.sgcon.dao.FotoDAO;
import br.com.sgcon.dao.UsuarioDAO;
import br.com.sgcon.model.Foto;
import br.com.sgcon.model.Usuarios;
import br.com.sgcon.util.Conexao;
import br.com.sgcon.util.HibernateUtil;

@ManagedBean(name = "mbUsuarioController")
@SessionScoped
public class UsuarioController implements Serializable {

    private static final long serialVersionUID = 1L;

    private Usuarios usuario = new Usuarios();
    private DataModel<Usuarios>usuarios;

    //objeto para o upload de foto, metodo: processFileUpload
    private Usuarios usuarioSelecionado = new Usuarios();
    private UsuarioDAO usuarioDAO;
    private List<Foto> fotos;
    private Foto foto = new Foto();
    private FotoDAO fotoDAO = new FotoDAO();

    public UsuarioController() {
        usuarioDAO = new UsuarioDAO();
        fotoDAO = new FotoDAO();
        usuario = new Usuarios();

    }

    public UsuarioDAO getUsuarioDAO() {
        return usuarioDAO;
    }

    public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
        this.usuarioDAO = usuarioDAO;
    }

    public void setUsuarios(DataModel<Usuarios> usuarios) {
        this.usuarios = usuarios;
    }

    public Usuarios getUsuario() {
        return usuario;
    }

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

    public void novoUsuario() {
        usuario = new Usuarios();
    }

    public void selecionarUsuario(){
        this.usuario = usuarios.getRowData();
    }

    public DataModel<Usuarios>getUsuarios(){
        UsuarioDAO dao = new UsuarioDAO();

        try {
            List<Usuarios> lista = dao.GetALL();
            usuarios = new ListDataModel<Usuarios>(lista);
        } catch (Exception e) {

        }

        return usuarios;
    }

    public void salvaFoto() {

        try {
            fotoDAO.save(foto);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            foto = new Foto();
          System.out.println("passou do pau");
            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO,
                            "Foto adicionada Com Sucesso!", "Foto adicionada Com Sucesso!"));

        }

    }

    public void processFileUpload(FileUploadEvent uploadEvent) {

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

    }

    public void listaFotosUsuario() {

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

            fotos = fotoDAO.listByUsuarios(usuarioSelecionado.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();
        }
    }

    //ESSE TA FUNCIONANDO - 24/09
    public void salvaUsuario() {

        try {
            usuarioDAO.save(usuario);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            usuario = new Usuarios();
            //usuarios = usuarioDAO.GetALL();

            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO,
                            "Usuário Adicionado Com Sucesso!", "Usuário Adicionado Com Sucesso!"));
        }
    }

    //teste exclusao  24/09
    public void deletaUsuario() {

        try {
            usuarioDAO.excluiUsuario(usuario);
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            usuario = new Usuarios();
            //usuarios = usuarioDAO.GetALL();

            FacesContext.getCurrentInstance().addMessage(
                    null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO,
                            "Usuário Adicionado Com Sucesso!", "Usuário Adicionado Com Sucesso!"));
        }
    }






    /*
    public void selecionarUsuario(){

    }


    public void setUsuarios(List<Usuarios> usuarios) {
        this.usuarios = usuarios;
    }





    public List<Usuarios> getUsuarios() {
        return usuarios;
    }

    public Usuarios getUsuarioSelecionado() {
        return usuarioSelecionado;
    }

    public void setUsuarioSelecionado(Usuarios usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }
    */
    public Foto getFoto() {
        return foto;
    }

    public void setFoto(Foto foto) {
        this.foto = foto;
    }

    public List<Foto> getFotos() {
        return fotos;
    }
    /*

    //teste metodo alterar
    public void alterar(ActionEvent actionEvent){
        new UsuarioDAO().alterar(usuario);
        usuarios = new UsuarioDAO().listAll();
        usuario = new Usuarios();
    }

    //metodo que "exclui" o usuario 
    public String deleteUsuario() {
        this.usuario = usuarios2.getRowData();

        String retorno = "erro";

        try {
            UsuarioDAO dao = new UsuarioDAO();
            dao.setaComoExcluido(usuario);
            retorno = "usuarios";
        } catch (Exception ex) {
            System.out.println("ERRO + " + ex.getMessage());
        }

        return retorno;
    }
    */

    /*
    public String deleteUsuario() {
        this.usuario = usuarios.getRowData();
        String retorno = "erro";

        try {
            UsuarioDAO dao = new UsuarioDAO();
            dao.excluiUsuario(usuario);
            retorno = "usuarios";
        } catch (Exception ex) {
            System.out.println("ERRO + " + ex.getMessage());
        }

        return retorno;
    }

    public String updateUsuario() {

        String retorno = "erro";

        try {
            UsuarioDAO dao = new UsuarioDAO();
            dao.Update(usuario);
            retorno = "listar";
        } catch (Exception ex) {
        }

        return retorno;
    }


    //não adiciona. aparece "metodo não encontrado"
    public String addUsuario() {

        String retorno = "erro";

        try {
            UsuarioDAO dao = new UsuarioDAO();
            dao.salvar(usuario);
            retorno = "usuarios";
        } catch (Exception ex) {
            System.out.println("ERRO + " + ex.getMessage());
        }

        return retorno;
    }
    */
//---------------------ate aqui, seguindo codigo da rlsystem--------------------------
}

UsuarioController2:

package br.com.sgcon.controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.sgcon.model.Usuarios;
import br.com.sgcon.dao.UsuarioDao;
import br.com.sgcon.dao.UsuarioDaoImp;

@ManagedBean(name = "UsuarioController2")
@SessionScoped
public class UsuarioController2 implements Serializable{

    private static final long serialVersionUID = 1L;
    private Usuarios usuario;
    private DataModel listaUsuarios;

    public DataModel getListarUsuarios() {
        List<Usuarios> lista = new UsuarioDaoImp().list();
        listaUsuarios = new ListDataModel(lista);
        return listaUsuarios;
    }

    public Usuarios getUsuario() {
        return usuario;
    }

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

    public void prepararAdicionarUsuario(ActionEvent actionEvent){
        usuario = new Usuarios();
        }

    public void prepararAlterarUsuario(ActionEvent actionEvent){
        usuario = (Usuarios)(listaUsuarios.getRowData());
        }

    public String excluirUsuario(){

        Usuarios usuarioTemp = (Usuarios)(listaUsuarios.getRowData());
        UsuarioDao dao = new UsuarioDaoImp();
        dao.remove(usuarioTemp);
        return "usuarios";

        }

    public void adicionarUsuario(ActionEvent actionEvent){

        UsuarioDao dao = new UsuarioDaoImp();
        dao.save(usuario);

        }

    public void alterarUsuario(ActionEvent actionEvent){

        UsuarioDao dao = new UsuarioDaoImp();
        dao.update(usuario);

        }
}

pagina xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
     <h:head>
     <link href="../resources/css/primefaces_personalizado.css" type="text/css" rel="stylesheet"/>
     <link href="../resources/css/exibir_popup.css" rel="stylesheet" type="text/css" media="all" />
     <style type="text/css">
.ui-widget {
    font-size: 11px !important;
    font-family: Verdana, Arial, Tahoma;
    font-weight: light;
}
</style>
     </h:head>
      <h:body>
    <ui:decorate template="painel.xhtml">

        <ui:define name="centro">
        <center>
        <p:outputLabel value="Cadastro de Usuários" styleClass="excluir_usuario_selecao"/>
        </center>
             <p:fieldset legend =" NOVO USUÁRIO" toggleable="true" collapsed="false">

                <center>

                <br/>

                <p:ajaxStatus
        style="width:64px;height:64px;position:fixed;right:5px;bottom:5px">
        <f:facet name="start">
            <p:graphicImage value="../resources/imagens/loading_prime.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>

        <!-- PAINEL DE CADASTRO DOS USUARIOS -->

            <h:panelGrid columns="2">
                <h:outputText value="Nome:" />
                <p:inputText  value="#{mbUsuarioController.usuario.nome}" required="true" requiredMessage="Preencha o Campo Nome, Por Favor!"/>

                <h:outputText value="E-mail:" />
                <p:inputText  value="#{mbUsuarioController.usuario.email}" required="true" requiredMessage="Preencha o Campo E-mail, Por Favor!"/>

                <h:outputText value="Senha:" />
                <p:password  value="#{mbUsuarioController.usuario.senha}" feedback="true"
                    promptLabel="Verificando Segurança..." weakLabel="Segurança: Fraca!"
                    goodLabel="Segurança: média..." strongLabel="Segurança: Muito Bom!" required="true" requiredMessage="Preencha o Campo Senha, Por Favor!"/>

                <h:outputText value="Perfil:" />
                <p:selectOneMenu id="perfil" value="#{mbUsuarioController.usuario.perfil}" style="margin-left:4%;">
                            <f:selectItem itemLabel="SÍNDICO" itemValue="SÍNDICO" />
                            <f:selectItem itemLabel="PROP/MORADOR" itemValue="PROP/MORADOR" />
                            <f:selectItem itemLabel="ADMINISTRADOR" itemValue="ADMINISTRADOR" />
                </p:selectOneMenu>



                <p:commandButton value="Salvar" actionListener="#{usuarioController2.adicionarUsuario()}"
                    update=":tabelaUsuarios:dtUsuarios, msgs" />
                <p:commandButton value="Limpar" onclick="form.reset()" />
                <!-- metodo salvar funciona desde que não use dialog -->
            </h:panelGrid>
        </p:panel>
        </h:form>
        </center>
        </p:fieldset>

        <!-- TABELA PARA EXIBIÇÃO DOS USUARIOS -->
        <h:form id="tabelaUsuarios">
        <p:dataTable  value="#{mbUsuarioController.usuarios}" var="p" id="dtUsuarios"
            style="text-align: center;" emptyMessage="Nenhum usuário cadastrado." paginator="true" rows="5"
            paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                         rowsPerPageTemplate="5,10,15" >


            <p:column headerText="Nome" style="width:10%">
                <h:outputText value="#{p.nome}" />
            </p:column>

            <p:column headerText="E-mail" style="width:20%">
                <h:outputText value="#{p.email}" />
            </p:column>

            <p:column headerText="Senha" style="width:10%">
                <h:outputText value="#{p.senha}" />
            </p:column>

            <p:column headerText="Perfil" style="width:10%">
                <h:outputText value="#{p.perfil}" />
            </p:column>

            <p:column style="width:4%">
                <p:commandButton id="addButton" 
                    onclick="PF('fotoDialog').show();" icon="ui-icon-plus"
                    title="Adicionar imagens">
                    <f:setPropertyActionListener value="#{p}"
                        target="#{mbUsuarioController.usuario.id}" />
                </p:commandButton>

                <p:spacer width="10" />

                <!-- BOTAO QUE EXIBE AS FOTOS CADASTRADAS >> SE NAO PUSER DOIS PONTOS ANTES DO ID NO UPDATE, NAO FUNCIONA -->

                <p:commandButton id="showButton" icon="ui-icon-search" title="Visualizar imagens" action="#{mbUsuarioController.listaFotosUsuario()}" 
                  update=":exibirImagem:infoUsuario" onclick="PF('usuarioDialog').show();">

                 <!-- ESTE CODIGO ABAIXO PEGA O USUARIO SELECIONADO --> 

                <f:setPropertyActionListener value="#{p}"
                        target="#{mbUsuarioController.selecionarUsuario}" />    
                </p:commandButton>
            </p:column>

            <!-- BOTAO ALTERAR -->

            <p:column style="width:1%">
                <p:commandButton   title="Alterar Usuário" 
                actionListener="#{usuarioController2.prepararAlterarUsuario}"  oncomplete="dialogGerLivro.show()" icon = "ui-icon-pencil">
                    <!--  <p:graphicImage value="../resources/imagens/editar.ico"/>-->

                </p:commandButton>
            </p:column>

            <!-- BOTAO EXCLUIR -->

            <p:column style="width:1%">
                <p:commandButton  id="botao_excluir" title="Excluir Usuário" icon="ui-icon-trash" action="#{usuarioController2.excluirUsuario()}">
                    <!--  <p:graphicImage value="../resources/imagens/excluir3.png"/>-->
                    <!-- <p:confirm header="Exclusão de Usuário" message="Desejar excluir este usuário?" icon="ui-icon-alert"></p:confirm> -->
                       <!-- <f:setPropertyActionListener target="#{mbUsuarioController.usuario}"
                                                        value="#{p}" /> -->
                </p:commandButton>
            </p:column>

        </p:dataTable>
        </h:form>
        <!-- DIALOGO DE CONFIRMAÇÃO DE EXCLUSÃO -->

         <p:confirmDialog id="confirm_dialog" global="true" showEffect="fade" hideEffect="explode">
             <h:form id="confirma_exclusao">
            <p:commandButton value="SIM" action = "#{mbUsuarioController.deletaUsuario() }" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check"
            oncomplete="confirm_dialog.hide();" update=":tabelaUsuarios"/>
            <p:commandButton value="NÃO" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
            </h:form>
        </p:confirmDialog>


        <!-- FIM DA TABELA DE EXIBIÇÃO DOS USUARIOS -->


        <!-- TESTE CRUD LIVROS DIALOG -->

        <p:dialog header="Gerencia de Livro" widgetVar="dialogGerLivro"  resizable="false" modal="true" showEffect="slide" width="500">
            <h:form prependId="false">
                <h:panelGrid id="infosLivro" columns="2" style="margin-bottom:10px">

                    <h:outputLabel for="nome" value="Nome:" />
                    <h:inputText id="nome" value="#{usuarioController2.p.nome}"/>

                    <h:outputLabel for="email" value="E-mail:" />
                    <h:inputText id="email" value="#{usuarioController2.p.email}"/>

                    <h:outputLabel for="senha" value="Senha:" />
                    <h:inputText id="senha" value="#{usuarioController2.p.senha}"/>


                    <h:outputLabel for="perfil" value="Perfil:" />
                    <h:selectOneMenu id="perfi" value="#{usuarioController2.p.perfil}">
                        <f:selectItem itemLabel="SÍNDICO" itemValue="SINDICO"/>
                        <f:selectItem itemLabel="PROP/MORADOR" itemValue="PROP/MORADOR"/>
                        <f:selectItem itemLabel="ADMINISTRADOR" itemValue="ADMINISTRADOR"/>
                    </h:selectOneMenu>

                    <p:commandButton  oncomplete="dialogGerLivro.hide();" actionListener="#{usuarioController2.adicionarUsuario}" value="Inserir Usuário"/>
                    <p:commandButton  oncomplete="dialogGerLivro.hide();" actionListener="#{usuarioController2.alterarUsuario}" value="Alterar Usuário"/>

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


        <!-- FIM TESTE CRUD LIVROS DIALOG -->

        <!-- CAIXA DE DIALOGO ADICIONAR IMAGENS  -->

        <p:dialog header="Adicionar imagens" widgetVar="fotoDialog"
            position="center" resizable="false" id="fotoDlg" showEffect="fade"
            hideEffect="explode" modal="true" width="400">
        <h:form id="inserirImagem" enctype="multipart/form-data">
        <p:growl id="msgs2" showDetail="false" showSummary="true" />
            <h:panelGrid id="infoFoto" columns="2">

                <h:outputText value="Foto: " />
                <p:fileUpload fileUploadListener="#{mbUsuarioController.processFileUpload}"
                    label="Escolher" cancelLabel="Cancelar" sizeLimit="400000"
                    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="#{mbUsuarioController.foto.descricao}" />

<!-- update para exibir a mensagem de foto cadastrada -->

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

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

        <!-- FIM DA CAIXA DE DIALOGO ADICIONAR IMAGENS  -->

        <!-- CAIXA DE DIALOGO EXIBIR IMAGENS  -->

        <p:dialog header="Detalhes do usuário" widgetVar="usuarioDialog"
            resizable="false" id="usuarioDlg" showEffect="fade"
            hideEffect="explode" modal="true" draggable="true" maximizable="true"
            minimizable="true">
            <h:form id="exibirImagem">
            <h:panelGrid id="infoUsuario" columns="2" style="margin:0 auto;">
                <div class="imagem_nao_encontrada">
                <h:outputText value="Nenhnuma imagem encontrada"
                    rendered="#{mbUsuarioController.fotos.size() == 0}" />
                </div>
                <p:galleria var="f" value="#{mbUsuarioController.fotos}" effect="slide"
                    effectSpeed="2000" panelHeight="250" panelWidth="201"
                    frameHeight="100" frameWidth="80" filmstripPosition="bottom"
                    showOverlays="true" autoPlay="false" >

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

                     <!-- <p:galleriaOverlay title="Descrição:">
                        <h:outputText value="#{f.descricao}" />
                    </p:galleriaOverlay>  -->

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

        <!-- FIMM DA CAIXA DE DIALOGO EXIBIR IMAGENS  -->

        <!-- CAIXA DE DIALOGO EDIÇÃO DE USUARIOS -->

        <p:dialog  id="alterar" header="Edição de Usuários" widgetVar="dialogoEditaUsuario"
            position="center" resizable="false" showEffect="fade"
            hideEffect="explode" modal="true" width="400">

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

                <h:outputText value="Nome: " />
                <p:inputText value="#{mbUsuarioController.usuario.nome}" />

                <h:outputText value="E-mail: " />
                <p:inputText value="#{mbUsuarioController.usuario.email}" />

                <h:outputText value="Senha: " />
                <p:inputText value="#{mbUsuarioController.usuario.senha}" />

                <h:outputText value="Perfil:" />
                <p:selectOneMenu  value="#{mbUsuarioController.usuario.perfil}" style="margin-left:4%;">
                            <f:selectItem itemLabel="SÍNDICO" itemValue="1" />
                            <f:selectItem itemLabel="PROP/MORADOR" itemValue="2" />
                            <f:selectItem itemLabel="ADMINISTRADOR" itemValue="3" />
                </p:selectOneMenu>

                <p:commandButton value="Alterar" icon="ui-icon-plus"
                    action="#" update="form" />



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

        <!--FIM DO  DIALOGO EDIÇÃO DE USUARIO -->



        </ui:define>
    </ui:decorate>
 </h:body>
</html>

O que não estou conseguindo ver, hein, gente?

  • Adicione o XHTML também.

    electus   24 de set de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java-ee ou faça a sua própria pergunta.