estou fazendo uma exclusão no banco de dados, quando clico no botão excluir faço uma comparação de iqualdade e quero fazer outra no mesmo if... negando. Por exemplo: Se a matricula é igural ao usuario e o valor da variavel "valiadoPor" for diferente de null, não poderei excluir. Nesse meu exemplo a primeira clausula do if funciona o problema vem depois do &&. Fazendo da forma que esta no código abaixo está permitindo excluir, quando o "valiadoPor" é iqual a null. Podem me ajudar?
if(func.getMatricula().equals(agendaCirurgica.getUsuario())&&(!agendaCirurgica.getAvaliadoPor().equals(null))){agendaCirurgicaDao.excluir(agendaCirurgica);FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Excluido com sucesso!!",null));}else{FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Você não pode excluir esse registro!!",null));}
alguma vez você utilizar obj.equals(null) em sua aplicação, você só terá dois tipos de resultados:
false, caso o seu objeto seja diferente de null
NullPointerException, casoo seu objeto seja igual a null.
Para comparar com o null apenas o == pode ser usado. Isto porque dizer que o objeto é null é dizer que na verdade não temos um objeto e sim uma referência que deveria apontar para um objeto determinado tipo mas que está apontando para null.
E o comparador == compara referências.
D
damianijr
equals é para comparar de objetos!
eles são implementados em object e reescritos em cada classe para um comportamento adequado…
null seria um “tipo especial” para definir que uma posição de memória é nula…
portanto, compara-se usando operadores de comparação (==, !=, etc…)
W
WebFaria
não deu certo, já tinha tentado dessa forma usando != mas continua excluindo, onde não deveria
W
WebFaria
Alguém tem um idéia, como devo fazer?
pois dessa forma não deu certo
if(func.getMatricula().equals(agendaCirurgica.getUsuario())&&(agendaCirurgica.getAvaliadoPor()!=null)){agendaCirurgicaDao.excluir(agendaCirurgica);FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Excluido com sucesso!!",null));}else{FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Você não pode excluir esse registro!!",null));}
Olhando para o seu código, o que está dentro do else{} deveria estar dentro do if{} e vice-versa.
Ficaria assim:
if(func.getMatricula().equals(agendaCirurgica.getUsuario())&&(!agendaCirurgica.getAvaliadoPor().equals(null))){FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Você não pode excluir esse registro!!",null));}else{agendaCirurgicaDao.excluir(agendaCirurgica);FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Excluido com sucesso!!",null));}
W
WebFaria
como estou usando && as duas condições devem ser verdade, então como a ultima do avaliadoPor não esta funcioanando, caimos na clausula do else excluindo o registro
W
WebFaria
no momento do click no botão excluir, no console da aplicação estou pedindo para mostrar o valor das variaveis, e estão retornando com valores para não poder excluir no exemplo que enviei do codigo, mas mesmo assim estão excluindo. Não entendo
D
Duzas87
Poste o erro que esta dando agora!
A comparação sendo feita com == ou != é pra dar certo, pelo menos o erro nao deve estar neste ponto!
F
fvslistas
WebFaria
Você considerou o meu último post?
Nele eu dizia que o que você escreveu como comportamento desejado não era condizente com o código que você enviou.
Você chegou a alterar o bloco do if com o bloco do else? Se fizer esta alteração o código passa a atender o comportamento que você descreveu como sendo o correto.
Mande os valores que estão sendo passados como parâmetros e mostre o novo código que está utilizando (caso tenha alterado alguma coisa).
W
WebFaria
sim, considerei, mas não deu certo. O que quero é excluir o registro somente se a matricula for igual ao usuario e o avaliadoPo for diferente de null
esse é o codigo:
System.out.println("########################"+func.getMatricula()+"#######"+agendaCirurgica.getUsuario()+"##################=> "+agendaCirurgica.getAvaliadoPor());if(func.getMatricula().equals(agendaCirurgica.getUsuario())&&(agendaCirurgica.getAvaliadoPor()!=null)){agendaCirurgicaDao.excluir(agendaCirurgica);FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Excluido com sucesso!!",null));}else{FacesContext.getCurrentInstance().addMessage(null,newFacesMessage(FacesMessage.SEVERITY_INFO,"Você não pode excluir esse registro!!",null));}
W
WebFaria
Pessoal, obrigado pela ajuda, o problema foi resolvido. Questão de lógica, só troquei o != por ==. Erro de principiante. VAleu galera