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).

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

Ivan Martineli

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar