Exclusão de usuários JSF

Java

10/02/2015

Olá pessoal,

Defini na classe de regras de negócio de Usuário que usuários administradores não deverão ser excluídos. Porém, não sei como incluir este detalhe no botão de exclusão.

O código do botão de exclusão está assim:

                <p:commandButton title="Excluir" action="#{usuarioBean.excluir}" onclick="if (!confirm('Confirma a exclusão do usuário #{usuario.nome}?')) return false;"
                                 icon="ui-icon-trash" update="tblUsuario">
                    <f:setPropertyActionListener target="#{usuarioBean.usuario}" value="#" />
                </p:commandButton>


O trecho de código do método excluir da classe UsuarioRN está assim:

    public void excluir(Usuario u) throws RNException {
        if (u.isAdministrador()) {
            throw new RNException("Usuários administradores não podem ser excluídos.");
        }
        else {
            this.usuarioDao.excluir(u);
        }
    }


Alguém poderia me dar uma orientação?

Grata.
Sgrandini

Sgrandini

Curtidas 0

Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

10/02/2015

Desculpe mas não entendi sua dúvida, pois pelo que vi sua lógica já está pronta, qual o problema ?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

10/02/2015

Desculpe mas não entendi sua dúvida, pois pelo que vi sua lógica já está pronta, qual o problema ?
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

10/02/2015

Desculpe mas não entendi sua dúvida, pois pelo que vi sua lógica já está pronta, qual o problema ?
GOSTEI 0
Sgrandini

Sgrandini

10/02/2015

Ronaldo,

Não esclareci mesmo o que eu queria. É que eu gostaria que quando o usuário tentasse excluir um usuário administrador aparecesse uma mensagem informando: "Usuários administradores não podem ser excluídos". No momento, só a mensagem de confirmação de exclusão aparece. Queria saber se é possível colocar um evento no botão Excluir que verifique se o usuário em questão é um administrador. Se for, a mensagem seria exibida. Caso contrário, a mensagem de confirmação de exclusão é que apareceria.

Obrigada.
GOSTEI 0
Fernando C

Fernando C

10/02/2015

sugestão: ainda sou 1/2 "xucro" em JSF, mas se me permitir 1 sugestão, eu definiria essa restrição na SQL;
na logica de negocio (chamada ao metodo do bean), fica mais simples: se exclusao ok, "return" "ok, usuario excluido", "operação efetuada com sucesso".. tipo assim..
else - exibir mensagem "usuario é admistrador, não pode ser excluido", e, claro a SQL não é executada, fica mais seguro..
é 1 procedimento bem simples e padrão em PHP, por exemplo... pense ai..
GOSTEI 0
Fernando C

Fernando C

10/02/2015

oi.. só a titulo de curiosidade, deu certo.. meu bean (observe as linhas após o "if"):

package managedbeans;

import javax.faces.FacesException;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean (name="ExcluiClientes")
@RequestScoped

public class ExcluiClientes {
  
public String idCliente;
public String mensagem;
   
public ExcluiClientes(){
}    
        
public String Excluir() {
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection conexaoBanco = 
DriverManager.getConnection("jdbc:mysql://localhost/agro1?user=root&password=");

PreparedStatement comandoBanco = conexaoBanco.prepareStatement("delete FROM CLIENTES WHERE ID = "+ idCliente +" and senha !='123'");
                        
int deleteCount = comandoBanco.executeUpdate();

if(deleteCount==1)

mensagem="registro excluido";

else

mensagem="registro não excluido";

}
catch(Exception Erro){
throw Erro instanceof javax.faces.FacesException ? (FacesException) Erro : new FacesException(Erro); 
}
return null;
}
   
public String getIdCliente() {
return idCliente;
}

public String getMensagem() {
return mensagem;
}

public void setIdCliente(String string) {
idCliente = string;
}

public void setMensagem(String string) {
mensagem = string;
}
}


Detalhes do form, bem simples: são só 3 componentes: no 1º - 1 cx de texto - digito o id do registro a ser excluido, o 2º é o "submit" e no 3º - outra cx d texto - é exibida uma mensagem se o registro foi excluido com sucesso ou não):

<h:inputText styleClass="inputText" id="txtIdCliente"   
                     required="true" value="#{ExcluiClientes.idCliente}"></h:inputText>

                    <h:message id="txtIdClienteError" for="form1:txtId_Cliente" styleClass="error" />

                    <h:commandButton value="Excluir" id="btnExcluir"
                    action="#{ExcluiClientes.Excluir}"></h:commandButton>
                  </TD>
                </TR>
                <TR>
                  <TD height="8" width="106">Resultado:</TD>
                  <TD height="8" width="367">

                    <h:inputText styleClass="inputText" id="txtNomeCliente" size="35" 
required="false"
                    value="#{ExcluiClientes.mensagem}"></h:inputText>
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

10/02/2015

Ronaldo,

Não esclareci mesmo o que eu queria. É que eu gostaria que quando o usuário tentasse excluir um usuário administrador aparecesse uma mensagem informando: "Usuários administradores não podem ser excluídos". No momento, só a mensagem de confirmação de exclusão aparece. Queria saber se é possível colocar um evento no botão Excluir que verifique se o usuário em questão é um administrador. Se for, a mensagem seria exibida. Caso contrário, a mensagem de confirmação de exclusão é que apareceria.

Obrigada.


Faça assim:

public void excluir(Usuario u) throws RNException {
    if (u.isAdministrador()) {
FacesMessage message = new FacesMessage(errorMessage);
		message.setSeverity(severity);
		FacesContext.getCurrentInstance().addMessage(null, "Usuários administradores não podem ser excluídos.");
    }
    else {
        this.usuarioDao.excluir(u);
    }
}
GOSTEI 0
Sgrandini

Sgrandini

10/02/2015

Olá,

Consegui resolver dessa forma:

    public String excluir() throws RNException {
        
        FacesContext facesContext = FacesContext.getCurrentInstance();
        
        if (this.usuario.isAdministrador()) {

            FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_WARN, "Aviso! Usuários administradores não podem ser excluídos.", "");
            facesContext.addMessage(null, facesMessage);
        }
        else {
            UsuarioRN usuarioRN = new UsuarioRN();
            usuarioRN.excluir(this.usuario);
        
            // Força a recarga da lista de usuários pelo método getLista().
            this.lista = null;
        } 
        return null;
    }


Obrigada pessoal!!!
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

10/02/2015

Disponha.
GOSTEI 0
POSTAR