Eu tenho um método de salvar, porem ele esta dando NullPointerException em uma das linha do método, a minha tela é o seguinte eu possuo 2 listas uma para selecionar múltiplos itens que ira sendo salva em uma lista que é a listaGuardaComponente ai eu quero percorrer essa lista para salvar um componente por vez, porem quando chega na linha que tem esse comando:
ocorrenciaManuComponentes.add(ocorrenciaManuComponente);
da NullPointerException e não sei porque, o meu método salvar é esse:
vou deixar todos os souts (que são minhas depurações)
public void salvarManutencao(ActionEvent actionEvent) {
try {
Boolean salva = Boolean.FALSE;
BigDecimal zero = new BigDecimal(0);
System.out.println("INSTACIOU OS BIGDECIAML E BOOLEAN");
if (ocorrenciaSelecionada.getOcorrenciaManutencao() != null) { // QUANDO FOR OCORRENCIA DE MANUTENCAO
System.out.println("PRIMEIRO IF");
if (listaGuardaComponente != null) {
for (Componente componeteSalvar : listaGuardaComponente) {
if (componeteSalvar.getRetirada().longValue() <= componeteSalvar.getEstoque().longValue()) {
System.out.println("ENTROI NO IF");
System.out.println("componeteSalvar: "+componeteSalvar);
System.out.println("LISTA COMPONENTE tamanho: "+listaGuardaComponente.size());
ocorrenciaManuComponente.setComponente(componeteSalvar);
ocorrenciaManuComponente.setOcorrenciaManutencao(ocorrenciaSelecionada.getOcorrenciaManutencao());
System.out.println("ocorrenciaSelecionada: "+ocorrenciaSelecionada.getOcorrenciaManutencao());
System.out.println("setOcorrenciaManutencao");
ocorrenciaManuComponente.setRetirada(componeteSalvar.getRetirada());
System.out.println("setRetirada"+componeteSalvar.getRetirada());
System.out.println("ocorrenciaManuComponente" +ocorrenciaManuComponente);
ocorrenciaManuComponentes.add(ocorrenciaManuComponente);//ERRO AQUI
System.out.println("ocorrenciaManuComponentes");
ocorrenciaManuComponente = new OcorrenciaManuComponente();
componeteSalvar.setEstoque(componeteSalvar.getEstoque().subtract(componeteSalvar.getRetirada()));
System.out.println("SALVAR");
componenteFacade.salvar(componeteSalvar);
System.out.println("SALVO");
} else if (componeteSalvar.getEstoque().longValue() <= componeteSalvar.getRetirada().longValue()) {
FacesUtil.exibirMensagemErro("A Quantidade a ser retirada do componente " + componeteSalvar.getComponente() + " é inferior a quantidade disponível em estoque");
componeteSalvar.setRetirada(new BigDecimal(0));
System.out.println("RETOIRADA NAO PERMITIDA");
}
}
ocorrenciaSelecionada.getOcorrenciaManutencao().setOcorrenciaMenuComponente(ocorrenciaManuComponentes);
ocorrenciaFacade.salvar(ocorrenciaSelecionada);
FacesUtil.exibirMensagemSucesso("Ocorrência Salva");;
} else {
if (procedimentoSelecionado.length != 0) {
ocorrenciaSelecionada.getOcorrenciaManutencao().setProcedimentos(Arrays.asList(procedimentoSelecionado));
}
if (equipamentosSelecionados2.length != 0) {
ocorrenciaSelecionada.getOcorrenciaManutencao().setEquipamentos(Arrays.asList(equipamentosSelecionados2));
}
ocorrenciaFacade.salvar(ocorrenciaSelecionada);
FacesUtil.exibirMensagemSucesso("Ocorrência Salva");
}
} else { // SALVA QUANDO NÃO FOR NENHUMA DAS OPCOES ACIMA
ocorrenciaFacade.salvar(ocorrenciaSelecionada);
FacesUtil.exibirMensagemSucesso("Ocorrência Salva");
}
} catch (Exception e) {
FacesUtil.exibirMensagemErro("" + e);
System.out.println("ERRO: "+e);
}
}
alguem podeira me ajudar