Fórum Exclusão de usuários JSF #510194
10/02/2015
0
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
Curtir tópico
+ 0Posts
10/02/2015
Ronaldo Lanhellas
Gostei + 0
10/02/2015
Ronaldo Lanhellas
Gostei + 0
10/02/2015
Ronaldo Lanhellas
Gostei + 0
10/02/2015
Sgrandini
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
11/02/2015
Fernando C
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
17/02/2015
Fernando C
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
18/02/2015
Ronaldo Lanhellas
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
19/02/2015
Sgrandini
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
21/02/2015
Ronaldo Lanhellas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)