Exclusão de usuários JSF
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:
O trecho de código do método excluir da classe UsuarioRN está assim:
Alguém poderia me dar uma orientação?
Grata.
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
Curtidas 0
Respostas
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
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
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
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.
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
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..
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
10/02/2015
oi.. só a titulo de curiosidade, deu certo.. meu bean (observe as linhas após o "if"):
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):
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
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.
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
10/02/2015
Olá,
Consegui resolver dessa forma:
Obrigada pessoal!!!
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
10/02/2015
Disponha.
GOSTEI 0