Button does not execute the ManagedBean method

4

When I click on the change or delete buttons, the ManagedBean methods are not executed.

Does anyone have any ideas? Is there any configuration on the buttons?

Project: link

UsuarioListaAtivos.xhtml

<ui:composition template="/WEB-INF/template/Layout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://java.sun.com/jsp/jstl/core">

<f:metadata>
    <f:viewAction action="#{usuarioBean.listaAtivos}" />
</f:metadata>

<ui:define name="titulo">Home .:: Fer Cos Mig ::.</ui:define>
<ui:define name="corpo">

    <div id="centraliza">
        <h1>Lista de usuarios ativos.</h1>
    </div>

    <h:form id="frm1">
        <p:messages showDetail="false" showSummary="true" autoUpdate="true" />
        <p:dataTable id="dtUsuarios" paginator="true" rows="50"
            paginatorPosition="botton" value="#{usuarioBean.usuarios}"
            var="usuarioDaLista">

            <p:column headerText="ID" sortBy="#{usuarioDaLista.id}">
                <h:outputText value="#{usuarioDaLista.id}" />
            </p:column>
            <p:column headerText="Nome" sortBy="#{usuarioDaLista.nome}">
                <h:outputText value="#{usuarioDaLista.nome}" />
            </p:column>
            <p:column headerText="E-mail" sortBy="#{usuarioDaLista.email}">
                <h:outputText value="#{usuarioDaLista.email}" />
            </p:column>
            <p:column headerText="UserName" sortBy="#{usuarioDaLista.username}">
                <h:outputText value="#{usuarioDaLista.username}" />
            </p:column>
            <p:column headerText="Tipo" sortBy="#{usuarioDaLista.tipoUsuario}">
                <h:outputText value="#{usuarioDaLista.tipoUsuario}" />
            </p:column>
            <p:column headerText="Data de cadastro"
                sortBy="#{usuarioDaLista.dataCadastro}">
                <h:outputText value="#{usuarioDaLista.dataCadastro}">
                    <f:convertDateTime pattern="dd/MM/yyyy" />
                </h:outputText>
            </p:column>

            <p:column>

                <h:commandLink action="#{usuarioBean.editar}" value="Editar" />

                <p:commandButton id="btnEdi" icon="ui-icon-pencil"
                    action="#{usuarioBean.editar}" immediate="true">
                    <f:setPropertyActionListener value="#{usuario}"
                        target="#{usuarioBean.usuarioSelecionado}" />
                </p:commandButton>

                <p:commandButton id="btnExc" icon="ui-icon-trash"
                    action="#{usuarioBean.desativar}" immediate="true">
                    <f:setPropertyActionListener value="#{usuario}"
                        target="#{usuarioBean.usuarioSelecionado}" />
                </p:commandButton>

            </p:column>

        </p:dataTable>
    </h:form>

</ui:define>

UsuarioBean.java

/**
 * 
 */
package com.fercosmig.login.controller;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import com.fercosmig.login.model.Usuario;
import com.fercosmig.login.repository.UsuarioRepository;
import com.fercosmig.util.JpaUtil;

/**
 * @author Fernando Costa Migliorini - [email protected]
 * @since Sep 2, 2015
 */
@ManagedBean
@ViewScoped
public class UsuarioBean {

    private Usuario usuario = new Usuario();
    private List<Usuario> usuarios;
    private Usuario usuarioSelecionado;

    public String editar(){
        System.out.println("@@@==> Entrou no método editar do UsuarioBean. Aqui não entra!");
        return "/UsuarioAlteracao?faces-redirect=true";

    }


    public void desativar() {
        System.out.println("@@@==> Entrou no método desativar do UsuarioBean. Aqui não entra!");

        /*FacesContext context = FacesContext.getCurrentInstance();
        EntityManager em = JpaUtil.getEntityManager();
        UsuarioRepository ur = new UsuarioRepository(em);


        this.usuarioSelecionado = ur.buscaPorId(usuarioSelecionado.getId());

        try {
            ur.desativar(this.usuarioSelecionado);
            context.addMessage(null, new FacesMessage("Usuario desativado com sucesso!"));
        } catch (Exception e) {
            FacesMessage mensagem = new FacesMessage(e.getMessage());
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, mensagem);
        }*/

    }

    public void listaAtivos() {
        System.out.println("@@@==> Entrou no método listaAtivos do UsuarioBean. Aqui está OK!");
        EntityManager em = JpaUtil.getEntityManager();
        UsuarioRepository ur = new UsuarioRepository(em);

        this.usuarios = ur.listaAtivos();
    }

    public String login() {
        System.out.println("@@@==> Entrou no método login do UsuarioBean. Aqui está OK!");
        FacesContext context = FacesContext.getCurrentInstance();

        Usuario usuarioParaAutenticacao = new Usuario();
        usuarioParaAutenticacao.setUsername(usuario.getUsername());
        usuarioParaAutenticacao.setPassword(usuario.getPassword());

        EntityManager em = JpaUtil.getEntityManager();
        UsuarioRepository ur = new UsuarioRepository(em);
        Usuario usuarioAutenticado = ur.login(usuarioParaAutenticacao);

        if (usuarioAutenticado != null) {

            this.setUsuario(usuarioAutenticado);

            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            request.getSession().setAttribute("usuario", usuarioAutenticado);

            return "/Home?faces-redirect=true";

        } else {

            FacesMessage mensagem = new FacesMessage("Usuário e/ou senha inválidos!");
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            context.addMessage(null, mensagem);
            return "/AccessDenied?faces-redirect=true";
        }
    }

    public String logout(){
        System.out.println("@@@==> Entrou no método logout do UsuarioBean. Aqui está OK!");
        FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
        return "/Login?faces-redirect=true";
    }

    /**
     * 
     */
    public UsuarioBean() {
    }

    /**
     * @return the usuario
     */
    public Usuario getUsuario() {
        return usuario;
    }

    /**
     * @param usuario
     *            the usuario to set
     */
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    /**
     * @return the usuarios
     */
    public List<Usuario> getUsuarios() {
        return usuarios;
    }

    /**
     * @param usuarios
     *            the usuarios to set
     */
    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }

    /**
     * @return the usuarioSelecionado
     */
    public Usuario getUsuarioSelecionado() {
        return usuarioSelecionado;
    }

    /**
     * @param usuarioSelecionado
     *            the usuarioSelecionado to set
     */
    public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }

}
    
asked by anonymous 03.09.2015 / 03:33

3 answers

0

Use ajax = false on button and userDistler on setPropertyActionListener like this:

<p:commandButton id="btnEdi" icon="ui-icon-pencil" action="#usuarioBean.editar}" immediate="true" ajax=false>
    <f:setPropertyActionListener value="#{usuarioDaLista}" target="#{usuarioBean.usuarioSelecionado}" />
</p:commandButton>
    
03.09.2015 / 15:10
0
  • First do not use "setPropertyActionListener" use the method itself
  • Change the edit signature to public String editar(Usuario usuarioEditar){
  • Another where this "value = # {user}" comes from, I can not see it in any place in code

   p:commandButton id="btnEdi" icon="ui-icon-pencil" 
        action="#{usuarioBean.editar(usuarioBean.usuarioSelecionado)}" 
      immediate="true" process="this"

    
17.11.2017 / 09:09
-1

Verify that the User entity has no fields marked as @NotNull.

Do not use any more @ManagedBean will be discontinued in the future. Use the much more robust CDI implementation @Named

    
20.11.2016 / 03:47