Fórum Null pointer exception - tratamento de campo vazio #504292
13/12/2014
0
Olá boa noite, sou recente em programação Java e gostaria que alguém me esclarece a seguinte situação: Tenho no meu managedBean um metodo que faz algumas verificações após o usuário clicar em salvar, porém exitem um combo na qual o usuário seleciona e traz os nomes dos clientes cadastrados(que vem de uma tabela chamada cliente), na qual deve selecionar pelo menos um para poder salvar. O método apenas verifica se o cliente não está vazio, se caso estiver retorne uma mensagem ao usuário, caso esteja preenchido prossiga a ação. Mais, ao realizar o debug, verifiquei que mesmo eu não selecionando o cliente na view, ele preenche como null(que está correto), mais só que deveria cair na mensagem e não deixar eu prosseguir com a ação até que eu selecione um cliente, mais não está acontecendo, está indo direto para o catch e gerando exceções; Null pointer exception. Segue o meu código fonte. As outras verificações funcionam perfeitamente(os campos são da mesma tabela), só não está funcionando as verificações que são relacionadas a outras tabelas como a de(Clientes e Funcionarios).
E essa é a minha view do cliente:
public void insert() {
try{
if ((occurrence.getTsDatePrevision() == null) || (occurrence.getTsDatePrevisionFinal() ==null)) {
MessageGrowl.warn(MessageProperties.getString("message.falhaDataFinal"));//funciona ok
}
else if(occurrence.getTsDatePrevision().after(occurrence.getTsDatePrevisionFinal())){
MessageGrowl.warn(MessageProperties.getString("message.falhaDataInicialMaiorDataFinal"));//funciona ok
}
else if(occurrence.getDsTitle().isEmpty()){
MessageGrowl.warn(MessageProperties.getString("message.falhaTitulo"));//funciona ok
}
else if(occurrence.getTbClient().getDsNameAbreviated()== null){
MessageGrowl.warn(MessageProperties.getString("message.falhaCliente"));//Não funciona
}
else if(!occurrenceFacade.verifyCode(occurrence.getDsCode())){
MessageGrowl.warn(MessageProperties.getString("message.codeExiste"));//funciona ok
}
else if(occurrence.getTbEmployee().getDsName().isEmpty()){
MessageGrowl.warn(MessageProperties.getString("message.falhaFuncionario"));//não funciona
}
else{
occurrence.setTsDateCreation(this.date);
occurrenceFacade.saves(occurrence,listOccurrence);
MessageGrowl.warn(MessageProperties.getString("message.sucesso"));
}
}
catch(Exception e){
e.printStackTrace();
}
E essa é a minha view do cliente:
<p:selectOneMenu value="#{occurrenceBean.occurrence.tbClient}"
styleClass="width300" converter="clientConverter">
<f:selectItem itemLabel="Selecione"></f:selectItem>
<f:selectItems value="#{occurrenceBean.findAllClient()}"
var="client" itemLabel="#{client.dsNameAbreviated}"
itemValue="#" />
</p:selectOneMenu>
Ivan Martineli
Curtir tópico
+ 0
Responder
Posts
17/12/2014
Ronaldo Lanhellas
Bom, não vai funcionar porque você não consegue chamar o método isEmpty() para um objeto nulo, o correto seria:
else if(occurrence.getTbEmployee() == null || occurrence.getTbEmployee().getDsName().isEmpty()){
//mensagem aqui
}
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)