user editing screen does not load data, and delete method does not delete

Asked

Viewed 260 times

0

Take a look at the codes:

    <?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">
<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:o="http://omnifaces.org/ui">

    <ui:define name="titulo">Cadastro de Usuário</ui:define>

    <ui:define name="corpo">
        <h:form>

            <h1>Cadastro Usuário</h1>

            <f:metadata>
                <o:viewParam name="usuario" value="#{cadastroUsuarioBean.usuario}"/>
                <f:event listener="#{cadastroUsuarioBean.inicializar}" type="preRenderView" />
            </f:metadata>

            <p:messages autoUpdate="true" closable="true"/>

            <p:toolbar>
                <p:toolbarGroup>
                    <p:button value="Novo" outcome="CadastroUsuario"/>
                    <p:commandButton value="Salvar" id="botaoSalvar" action="#{cadastroUsuarioBean.salvar}"  update="@form"/>
                </p:toolbarGroup>
                <p:toolbarGroup align="right">
                    <p:button value="pesquisa"/>                    
                </p:toolbarGroup>
            </p:toolbar>

            <p:panelGrid columns="2" id="painel" style=" width: 100%; margin-top: 20px" columnClasses="rotulo, campo" >

                <p:outputLabel value="Nome" for="nome"/>
                <p:inputText id="nome" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.nome}"/>

                <p:outputLabel value="E-mail" for="email"/>
                <p:inputText id="email" size="60" maxlength="80" value="#{cadastroUsuarioBean.usuario.email}"/>

                <p:outputLabel value="Senha" for="senha"/>
                <p:password id="senha" value="#{cadastroUsuarioBean.usuario.senha}"/>

                <p:selectOneMenu >                
                    <f:selectItem itemLabel="Auxiliar"/>
                    <f:selectItem itemLabel="Vandedor"/>
                    <f:selectItem itemLabel="Administradores"/>
                </p:selectOneMenu>          

                <p:commandButton value="Adicionar grupo"/>
            </p:panelGrid>

            <p:dataTable value="#{pesquisaClienteBean.itens}" var="item" id="tabelaItens" style="margin-top: 20px">

                <p:column headerText="Grupo" style="text-align: left">
                    <h:outputText value="Vendedor"/>
                </p:column>

                <p:column   style="width: 100px; text-align: center">
                    <p:commandButton icon="ui-icon-trash" title="Excluir" oncomplete="PF('comfirmacaoExclusao').show();"/>
                </p:column >

            </p:dataTable>

            <p:confirmDialog header="Exclusao Usuário" message="Tem certeza que deseja excluir Usuário"
                             widgetVar="comfirmacaoExclusao">
                <p:button value="Não" onclick="PF('comfirmacaoExclusao').hide(); return false;"/>
                <p:commandButton value="Sim" oncomplete="PF('comfirmacaoExclusao').hide();"/>

            </p:confirmDialog>

        </h:form>  
    </ui:define>

</ui:composition>

User registration.java.

@Named
@ViewScoped
public class CadastroUsuarioBean implements Serializable {

    private static final long serialVersionUID = 0L;

    private Usuario usuario;

    private Grupo grupoSelecionado;
    private List<Grupo> grupo = new ArrayList<Grupo>();

    @Inject
    private CadastroUsuarioService cadastroUsuarioService;

    @Inject
    private Grupos grupos;

    public CadastroUsuarioBean() {
        limpar();
    }

    public void inicializar() {
        grupo = grupos.grupos();
        grupoSelecionado = new Grupo();
    }

    public void limpar() {
        usuario = new Usuario();
        grupo = new ArrayList<Grupo>();
    }

    public void salvar() {

        adicionarGrupo();
        this.usuario = cadastroUsuarioService.salvar(this.usuario);

        limpar();
        FacesUtil.addInfoMessage("Usuario cadastro com sucesso!");
    }

    public void adicionarGrupo() {
        this.usuario.getGrupos().add(grupoSelecionado);
    }

    public Usuario getUsuario() {
        return usuario;
    }

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

    public List<Grupo> getGrupo() {
        return grupo;
    }

    public Grupo getGrupoSelecionado() {
        return grupoSelecionado;
    }

    public void setGrupoSelecionado(Grupo grupoSelecionado) {
        this.grupoSelecionado = grupoSelecionado;
    }
} 

Cadastrousuaroservice.java

 public class CadastroUsuarioService implements Serializable {

    private static final long serialVersionUID = 0L;

    @Inject
    private Usuarios usuarios;

    @Transactional
    public Usuario salvar(Usuario usuario) {
        Usuario usuarioExistente = usuarios.porId(usuario.getId());

        if (usuarioExistente != null && !usuarioExistente.equals(usuario)) {
            throw new NegocioException("Já existe um usuario informado.");
        }

        return usuarios.guardar(usuario);
    }

}

Usuarioconverter.java

    @FacesConverter(forClass = Usuario.class)
public class UsuarioConverter implements Converter {

    @Inject
    private Usuarios usuarios;

    public UsuarioConverter() {
        usuarios = CDIServiceLocator.getBean(Usuarios.class);
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        Usuario retorno = null;

        if (StringUtils.isNotBlank(value)) {
            retorno = (Usuario) this.usuarios.filtrados(new UsuarioFilter());
        }

        return retorno;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        if (value != null) {
            Long id = ((Usuario) value).getId();
            String retorno = (id == null ? null : id.toString());

            return retorno;
        }

        return "";
    }

}

repository Usuarios.java

    public class Usuarios implements Serializable {

    private static final long serialVersionUID = 0L;
    @Inject
    private EntityManager manager;

    public Usuario guardar(Usuario usuario) {
        return manager.merge(usuario);
    }

    @Transactional
    public void remover(Usuario usuario) {
        try {
            usuario = porId(usuario.getId());
            manager.remove(usuario);
            manager.flush();
        } catch (PersistenceException e) {
            throw new NegocioException("Usuario " + usuario.getNome() + " não pode ser excluído.");
        }
    }

    /*public Usuario porId(Long id) {
     return manager.find(Usuario.class, id);
     }*/
    public Usuario porId(Long id) {
        try {
            return manager.createQuery("from Usuario where id = :id", Usuario.class).setParameter("id", id).getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
    }

    public Usuario porNomeOuEmail(String nome, String email) {
        try {
            return manager.createQuery("from Usuario where upper(nome) = :nome and email = :email", Usuario.class)
                    .setParameter("nome", nome.toUpperCase())
                    .setParameter("email", email.toUpperCase())
                    .getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
    }

    public Usuario porEmail(String email) {
        try {
            return manager.createQuery("from Usuario where upper(email) = :email", Usuario.class)
                    .setParameter("email", email.toUpperCase())
                    .getSingleResult();
        } catch (NoResultException e) {
            return null;
        }
    }

    @SuppressWarnings("unchecked")
    public List<Usuario> filtrados(UsuarioFilter filtro) {
        Session session = manager.unwrap(Session.class);
        Criteria criteria = session.createCriteria(Usuario.class);

        if (StringUtils.isNotBlank(filtro.getNome())) {
            criteria.add(Restrictions.ilike("nome", filtro.getNome(), MatchMode.ANYWHERE));
        }

        return criteria.addOrder(Order.asc("nome")).list();
    }
}

repositorio groups.java

 public class Grupos implements Serializable {

    private static final long serialVersionUID = 0L;

    @Inject
    private EntityManager manager;

    public List<Grupo> grupos(){
        return manager.createQuery("FROM Grupo",Grupo.class).getResultList();
    }

    public  Grupo porId(Long id) {
        return this.manager.find(Grupo.class, id);
    }


    public Grupo grupoPorNome(String nome)
    {
        try
            {
            return manager.createQuery("from Grupo where upper(nome) = :nome", Grupo.class)
                    .setParameter("nome", nome.toUpperCase())
                    .getSingleResult();
            }
        catch (NoResultException e)
        {
            return null;
        }
    }


}

Search user.java.

@Named @Viewscoped public class Pesquisa usuariosbean Implements Serializable {

private static final long serialVersionUID = 0L;

@Inject
private Usuarios usuarios;

private final UsuarioFilter filtro;
private List<Usuario> usuariosFiltrados;

private Usuario usuarioSelecionado;

public PesquisaUsuariosBean() {
    filtro = new UsuarioFilter();
}

public void excluir() {
    usuarios.remover(usuarioSelecionado);
    usuariosFiltrados.remove(usuarioSelecionado);

    FacesUtil.addInfoMessage("Usuario" + usuarioSelecionado.getId() + "excluido com sucesso");

}

public void pesquisar() {
    usuariosFiltrados = usuarios.filtrados(filtro);
}

public UsuarioFilter getFiltro() {
    return filtro;
}

public List<Usuario> getUsuariosFiltrados() {
    return usuariosFiltrados;
}



public Usuario getUsuarioSelecionado() {
    return usuarioSelecionado;
}

public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
    this.usuarioSelecionado = usuarioSelecionado;
}

}

Search users.xhtml

    <ui:define name="corpo">
    <h:form >
        <h1>Pesquisa Usuarios</h1>

        <p:messages autoUpdate="true" closable="true"/>

        <p:toolbar style="margin-top: 20px">

            <p:toolbarGroup style="padding: 4px">
                <p:commandButton value="Pesquisar" action="#{pesquisaUsuariosBean.pesquisar}"
                                 update=" @form "  />
            </p:toolbarGroup>

            <p:toolbarGroup align="right" style="padding: 4px"> 
                <p:button value="Novo" outcome="/usuarios/CadastroUsuario" />
            </p:toolbarGroup>

        </p:toolbar>

        <p:panelGrid  id="painel" columns="2" style="width: 100%; margin-top: 20px" columnClasses="rotulo,campo">

            <p:outputLabel value="Nome" for="nome"/>
            <p:inputText id="nome" style="width: 50%" value="#{pesquisaUsuariosBean.filtro.nome}"/>

        </p:panelGrid>

        <p:dataTable value="#{pesquisaUsuariosBean.usuariosFiltrados}" var="usuario" id="tabelaUsuarios" style="margin-top: 20px"
                     emptyMessage="Nenhum Usuario Encontrado" rows="20" paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">

            <p:column headerText="Nome" style="text-align: left">
                <h:outputText value="#{usuario.nome}"/>
            </p:column>

            <p:column headerText="E-mail"  style="text-align: left">
                <h:outputText value="#{usuario.email}"/>
            </p:column>

            <p:column   style="width: 100px;text-align: center">
                <p:button  icon="ui-icon-pencil" title="Editar" style="margin: 5px"
                           outcome="/usuarios/CadastroUsuario">
                    <f:param name="usuario" value="#{usuario.id}"/>
                </p:button>
                <p:commandButton icon="ui-icon-trash" title="Excluir" oncomplete="PF('confirmacaoExclusao').show()" process="@this"
                                 update=":confirmacaoExclusaoDialog">
                    <f:setPropertyActionListener target="#{pesquisaUsuariosBean.usuarioSelecionado}" value="#{usuario}"/>
                </p:commandButton>
            </p:column >

        </p:dataTable>

        <p:confirmDialog header="Exclusão de produto" message="Tem certeza que deseja excluir o produto #{pesquisaUsuariosBean.usuarioSelecionado.nome} ?"
                         widgetVar="confirmacaoExclusao" id="confirmacaoExclusaoDialog">
            <p:button value="Não" onclick="PF('confirmacaoExclusao').hide(); return false;" />
            <p:commandButton value="Sim" oncomplete="PF('confirmacaoExclusao').hide();" 
                             action="#{pesquisaUsuariosBean.excluir}" process="@this" update="@from"/>
        </p:confirmDialog>

    </h:form>
  • log appears this error too:

  • Hello, Adriano! Detail your error better. it was not clear at what point gives the error and the details of the error.

  • Hello Dherik, this problem can solve,I have another problem when editing and deleting, when pressing edit button it directs to registration screen that I am using for registration and editing, but the same is not loading data to registration screen, because when I edit to direct is to load data on the registration screen for editing, and when deleting says user can not deleted. I have tried numerous possibilities and nothing. I will post code. if you can help me thank you.

  • if you solved the problem, show the solution here to us. If you have a new question, I recommend creating a new question :).

  • Dherik I’m sorry, I made a mistake not solved yet this problem still persists in the server log shows that it is accessing database but does not appear on the screen, query id appears but does not load data, and I can not delete.

  • hello someone can help me

Show 1 more comment
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.