Tenho um DataTable com um SingleSelection. Quando se clica em uma das linhas, uma Dialog é exibida com os valores do objeto selecionado.
Os dados são exibidos em um PanelGrid, dentro da Dialog. Tenho um CommandButton, que chama um método que invoca um método do Dao, responsável por fazer um update na base de dados.
Quando clico no CommandButton e ele chama o método do Bean, os dados do objetos estão nulos. Não sei onde está o erro.
Alguém sabe como posso corrigir isto?
Desde já, obrigado.
javax.faces.FacesException: #{horaExtraBean.updateAprovacaoRH()}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:117)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
... 26 more
Caused by: java.lang.NullPointerException
at bean.HoraExtraBean.updateAprovacaoRH(HoraExtraBean.java:309)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 27 more
[/b]Meu Bean:[b]
@ManagedBean
@ViewScoped
public class HoraExtraBean implements Serializable {
private HoraExtra horaExtra = new HoraExtra();
private ArrayList<HoraExtra> minhasHorasExtrasList = new ArrayList<HoraExtra>();
private ArrayList<HoraExtra> horasExtrasListSupervisor = new ArrayList<HoraExtra>();
private ArrayList<HoraExtra> horasExtrasListRH = new ArrayList<HoraExtra>();
private HoraExtraDao horaExtraDao = new HoraExtraDao();
private MotivoDao motivoDao = new MotivoDao();
private FuncionarioDao funcionarioDao = new FuncionarioDao();
private MotivoCancelamentoDao motivoCancelamentoDao = new MotivoCancelamentoDao();
private SessionManager sm = SessionManager.getInstance();
private Funcionario funcionarioLogado = new Funcionario();
private Projeto projeto = new Projeto();
private ProjetoDao projetoDao = new ProjetoDao();
private Funcionario funcionario = new Funcionario();
private ArrayList<HoraExtra> horasExtrasFuncionarioList = new ArrayList<HoraExtra>();
public HoraExtraBean() {
this.funcionarioLogado.setMatricula(this.sm.funcionario.getMatricula());
if (this.sm.usuario.getPerfil().equals("RH")) {
this.horaExtra = new HoraExtra();
this.loadHorasExtrasRH();
} else if (this.sm.usuario.getPerfil().equals("Supervisor")) {
this.loadHorasExtrasSupervisor();
} else if (this.sm.usuario.getPerfil().equals("Funcionario")) {
this.loadMinhasHorasExtras();
}
}
public ArrayList<HoraExtra> loadMinhasHorasExtras() {
this.minhasHorasExtrasList = new ArrayList<HoraExtra>();
this.minhasHorasExtrasList = this.horaExtraDao.getByFuncionario(this.sm.funcionario.getMatricula());
this.minhasHorasExtrasList = putMotivos(this.minhasHorasExtrasList);
return this.minhasHorasExtrasList;
}
public ArrayList<HoraExtra> loadHorasExtrasSupervisor() {
this.horasExtrasListSupervisor = new ArrayList<HoraExtra>();
this.horasExtrasListSupervisor = this.horaExtraDao.getAll(EQueryFilter.Supervisor);
this.horasExtrasListSupervisor = putFuncionarios(horasExtrasListSupervisor);
this.horasExtrasListSupervisor = putMotivos(this.horasExtrasListSupervisor);
return this.horasExtrasListSupervisor;
}
public ArrayList<HoraExtra> loadHorasExtrasRH() {
this.horasExtrasListRH = new ArrayList<HoraExtra>();
this.horasExtrasListRH = this.horaExtraDao.getAll(EQueryFilter.RH);
this.horasExtrasListRH = putFuncionarios(horasExtrasListRH);
this.horasExtrasListRH = putMotivos(this.horasExtrasListRH);
return this.horasExtrasListRH;
}
public void loadHorasExtrasRHByProjeto() {
this.projeto = this.projetoDao.getByDescricao(this.projeto.getDescricao());
this.horasExtrasListRH = new ArrayList<HoraExtra>();
this.horasExtrasListRH = this.horaExtraDao.getByProjeto(this.projeto.getId());
this.horasExtrasListRH = putFuncionarios(horasExtrasListRH);
this.horasExtrasListRH = putMotivos(this.horasExtrasListRH);
}
public void loadHorasExtrasRHByMes() {
Calendar calendar = Calendar.getInstance();
if (this.horaExtra.getDataHoraExtra() != null) {
calendar.setTime(this.horaExtra.getDataHoraExtra());
this.horaExtra.setAno(calendar.get(Calendar.YEAR));
this.horaExtra.setMes(calendar.get(Calendar.MONTH));
this.horasExtrasListRH = new ArrayList<HoraExtra>();
this.horasExtrasListRH = this.horaExtraDao.getByMes(this.horaExtra.getMes(), this.horaExtra.getAno());
this.horasExtrasListRH = putFuncionarios(horasExtrasListRH);
this.horasExtrasListRH = putMotivos(this.horasExtrasListRH);
}
}
public void loadHorasExtrasRHByFuncionario() {
this.horasExtrasFuncionarioList = new ArrayList<HoraExtra>();
this.funcionario = this.funcionarioDao.getByNome(this.funcionario.getNome());
this.horasExtrasFuncionarioList = this.horaExtraDao.getByFuncionario(this.funcionario.getMatricula());
this.horasExtrasFuncionarioList = putMotivos(this.horasExtrasFuncionarioList);
}
public ArrayList<HoraExtra> putFuncionarios(ArrayList<HoraExtra> heList) {
Funcionario funcionario = new Funcionario();
ArrayList<HoraExtra> heListAux = new ArrayList<HoraExtra>();
for (HoraExtra horaExtra1 : heList) {
funcionario = this.funcionarioDao.getByMatricula(horaExtra1.getFuncionario().getMatricula());
horaExtra1.setFuncionario(funcionario);
heListAux.add(horaExtra1);
}
return heListAux;
}
public ArrayList<HoraExtra> putMotivos(ArrayList<HoraExtra> heList) {
Motivo motivo = new Motivo();
MotivoCancelamento motivoCancelamento = new MotivoCancelamento();
ArrayList<HoraExtra> heListAux = new ArrayList<HoraExtra>();
for (HoraExtra horaExtra1 : heList) {
motivo = this.motivoDao.getByID(horaExtra1.getMotivo().getId());
horaExtra1.setMotivo(motivo);
motivoCancelamento = motivoCancelamentoDao.getByID(horaExtra1.getMotivoCancelamento().getId());
horaExtra1.setMotivoCancelamento(motivoCancelamento);
heListAux.add(horaExtra1);
}
return heListAux;
}
public void insertBasic() {
this.horaExtra.setFuncionarioCadastro(this.sm.funcionario);
this.horaExtra.setFuncionario(this.sm.funcionario);
Calendar calendar = Calendar.getInstance();
calendar.setTime(this.horaExtra.getDataInicial());
this.horaExtra.setAno(calendar.get(Calendar.YEAR));
this.horaExtra.setMes(calendar.get(Calendar.MONTH));
if (calendar.get(Calendar.DAY_OF_WEEK) == 1 || calendar.get(Calendar.DAY_OF_WEEK) == 7) {
this.horaExtra.setTipoHoraExtraGerada(ETipoHoraExtra.Completa);
} else {
this.horaExtra.setTipoHoraExtraGerada(ETipoHoraExtra.Percentual);
}
this.horaExtra.setDataHoraExtra(this.horaExtra.getDataInicial());
Motivo motivo = new Motivo();
motivo = this.motivoDao.getByDescricao(this.horaExtra.getMotivo().getDescricao());
this.horaExtra.setMotivo(motivo);
this.horaExtra.setQuantidadeHoraExtraGerada(this.calcularDiferencaHoras(this.horaExtra.getDataInicial(), this.horaExtra.getDataFinal()));
this.funcionario.setSaldoHoraExtra(this.funcionario.getSaldoHoraExtra() + this.horaExtra.getQuantidadeHoraExtraGerada());
this.funcionarioDao.updateSaldoHoraExtra(this.funcionario);
this.horaExtraDao.insertBasic(this.horaExtra, false);
this.loadMinhasHorasExtras();
}
public void updateAprovacaoSupervisor() {
this.horaExtraDao.updateAprovacaoSupervisor(this.horaExtra);
this.loadHorasExtrasSupervisor();
}
public boolean statusAprovacaoSupervisor() {
if (this.horaExtra.getAprovadoSupervisor() == 0) {
return false;
}
return true;
}
public void updateAprovacaoRH() {
if (this.horaExtra.getAprovadoRH().equals(EEstadoAprovacao.Reprovado) && this.horaExtra.getMotivoCancelamento() != null) {
MotivoCancelamentoDao motivoCancelamentoDao = new MotivoCancelamentoDao();
MotivoCancelamento motivoCancelamento = new MotivoCancelamento();
motivoCancelamento = motivoCancelamentoDao.getByDescricao(this.horaExtra.getMotivoCancelamento().getDescricao());
this.horaExtraDao.updateAprovacaoRH(this.horaExtra, motivoCancelamento.getId());
} else {
this.horaExtraDao.updateAprovacaoRH(this.horaExtra, 0);
}
}
public void debitarSaldoHorasFuncionario() {
if (this.funcionario.getSaldoHoraExtra() > 30) {
this.funcionario.setSaldoHoraExtra(this.funcionario.getSaldoHoraExtra() - 30);
} else {
this.funcionario.setSaldoHoraExtra(0);
}
this.horaExtraDao.debitarSaldoHorasFuncionario(this.funcionario);
this.horaExtra = null;
this.valorCalculadoHEs = 0;
this.funcionario = null;
this.saldoPosDebito = 0;
}
public HoraExtra getHoraExtra() {
if (this.horaExtra == null) {
this.horaExtra = new HoraExtra();
this.horaExtra.setFuncionario(new Funcionario());
}
return horaExtra;
}
public void setHoraExtra(HoraExtra horaExtra) {
this.horaExtra = horaExtra;
}
public ArrayList<HoraExtra> getMinhasHorasExtrasList() {
return minhasHorasExtrasList;
}
public void setMinhasHorasExtrasList(ArrayList<HoraExtra> minhasHorasExtrasList) {
this.minhasHorasExtrasList = minhasHorasExtrasList;
}
public ArrayList<HoraExtra> getHorasExtrasListSupervisor() {
return horasExtrasListSupervisor;
}
public void setHorasExtrasListSupervisor(ArrayList<HoraExtra> horasExtrasListSupervisor) {
this.horasExtrasListSupervisor = horasExtrasListSupervisor;
}
public ArrayList<HoraExtra> getHorasExtrasListRH() {
return horasExtrasListRH;
}
public void setHorasExtrasListRH(ArrayList<HoraExtra> horasExtrasListRH) {
this.horasExtrasListRH = horasExtrasListRH;
}
public Funcionario getFuncionarioLogado() {
return funcionarioLogado;
}
public Projeto getProjeto() {
if (this.projeto == null) {
this.projeto = new Projeto();
}
return projeto;
}
public void setProjeto(Projeto projeto) {
this.projeto = projeto;
}
public Funcionario getFuncionario() {
if (this.funcionario == null) {
this.funcionario = new Funcionario();
}
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public ArrayList<HoraExtra> getHorasExtrasFuncionarioList() {
return horasExtrasFuncionarioList;
}
public void setHorasExtrasFuncionarioList(ArrayList<HoraExtra> horasExtrasFuncionarioList) {
this.horasExtrasFuncionarioList = horasExtrasFuncionarioList;
}
aprendizweb, quando chamo a Dialog, todos os dados aparecem normalmente, entretanto, quando clico no commandButton e o método é chamado, os valores estão nulos.