Olá Pessoal, sou novo aqui desculpa se fizer algo de errado. Estou com um problema num sistema desenvolvido que é que a medida que o usuário vai navegando do sistema depois de um certo tempo as paginas nao renderizam mas volta quando o usuário atualiza a página. Pesquisei muito mas não consegui achar uma solução e o erro que dá não ajuda muito a solucionar tbm.
obs: o erro não dá apenas na página em questão “agentes”.
obs_2: o erro de nullpointer parece ser numa classe de Filter criada, mas ainda não sei oque chega nulo a ela
03-Sep-2018 12:27:54.885 SEVERE [http-nio-8084-exec-13] com.sun.faces.application.view.FaceletViewHandlingStrategy.handleRenderException Error Rendering View[/agentes.xhtml]
java.lang.NullPointerException
at com.sun.faces.application.view.ViewScopeContextManager.destroyBeans(ViewScopeContextManager.java:171)
at com.sun.faces.application.view.ViewScopeContextManager.clear(ViewScopeContextManager.java:122)
at com.sun.faces.application.view.ViewScopeManager.removeEldestViewMap(ViewScopeManager.java:399)
at com.sun.faces.application.view.ViewScopeManager.processPostConstructViewMap(ViewScopeManager.java:298)
at com.sun.faces.application.view.ViewScopeManager.processEvent(ViewScopeManager.java:244)
at com.sun.faces.application.view.ViewScopeEventListener.processEvent(ViewScopeEventListener.java:68)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:108)
at javax.faces.event.ComponentSystemEvent.processListener(ComponentSystemEvent.java:118)
at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2169)
at com.sun.faces.application.ApplicationImpl.invokeListenersFor(ApplicationImpl.java:2142)
at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:294)
at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:739)
at javax.faces.component.UIViewRoot.getViewMap(UIViewRoot.java:1557)
at com.sun.faces.application.view.ViewScopeContextManager.createBean(ViewScopeContextManager.java:148)
at com.sun.faces.application.view.ViewScopeContext.get(ViewScopeContext.java:137)
at org.jboss.weld.context.PassivatingContextWrapper$AbstractPassivatingContextWrapper.get(PassivatingContextWrapper.java:76)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
at org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:761)
at org.jboss.weld.el.AbstractWeldELResolver.lookup(AbstractWeldELResolver.java:107)
at org.jboss.weld.el.AbstractWeldELResolver.getValue(AbstractWeldELResolver.java:90)
at org.jboss.weld.environment.servlet.util.ForwardingELResolver.getValue(ForwardingELResolver.java:49)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:66)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:80)
at org.apache.el.parser.AstValue.getValue(AstValue.java:137)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIData.getValue(UIData.java:732)
at org.primefaces.component.api.UIData.getDataModel(UIData.java:764)
at org.primefaces.component.datatable.DataTable.loadLazyData(DataTable.java:1015)
at org.primefaces.component.datatable.DataTableRenderer.preRender(DataTableRenderer.java:97)
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:85)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at org.primefaces.component.tabview.TabViewRenderer.encodeTabContent(TabViewRenderer.java:313)
at org.primefaces.component.tabview.TabViewRenderer.encodeContents(TabViewRenderer.java:271)
at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(TabViewRenderer.java:132)
at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:71)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.primefaces.apollo.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:35)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
/*
* AgenteView.java
*
* Criado em Sat Mar 10 14:45:52 BRT 2018
*
*/
@Named
@ViewScoped
public class AgenteView implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private PermissaoService permissao;
@Inject
private LoginView login;
@Inject
private AgenteService agenteService;
@Inject
private EnderecoService enderecoService;
@Inject
private CidadeService cidadeService;
@Inject
private EstadoService estadoService;
private String mens;
private String nrCPF;
private boolean editando;
private LazyDataModel<Agente> agentes = null;
private FiltroAgente filtro = new FiltroAgente();
private Agente agente;
private Map<String, String> mapEstados = new TreeMap<>();
private Estado estado;
private List<Estado> estados;
private List<Cidade> cidades;
@PostConstruct
public void init() {
estados = estadoService.listaEstados();
agente = new Agente();
agentes = new LazyDataModel<Agente>() {
private static final long serialVersionUID = 1L;
int total;
@Override
public List<Agente> load(int first, int pageSize,
String sortField, SortOrder sortOrder,
Map<String, Object> filters) {
filtro.setPrimeiroRegistro(first);
filtro.setQuantidadeRegistros(pageSize);
filtro.setAscendente(SortOrder.ASCENDING.equals(sortOrder));
filtro.setPropriedadeOrdenacao(sortField);
total = agenteService.quantidadeFiltrados(filtro);
setRowCount(total);
return agenteService.filtrados(filtro);
}
@Override
public Object getRowKey(Agente registro) {
return registro != null ? registro.getId() : null;
}
@SuppressWarnings("unchecked")
@Override
public Agente getRowData(String id) {
Integer chave = Integer.valueOf(id);
List<Agente> lista = (List<Agente>) getWrappedData();
for (Agente agente : lista) {
if (chave.equals(agente.getId())) {
return agente;
}
}
return null;
}
};
}
/**
* Método responsável de passar um registro do tipo Agente para seja
* excluido do banco de dados
*
* @param codigo id da Agente
*/
public void excluir(Integer codigo) {
if (permissao.temPermissao(login.pegaUser().getPermissoes(), Constantes.AGENTE_EXCLUIR)) {
mens = agenteService.deletarAgente(codigo);
if (mens.equals("ok")) {
FacesUtil.addInfoMessage("Beleza", "Deletado ok");
FacesUtil.callBackSucesso(true);
} else {
FacesUtil.addErrorMessage("Aviso", mens);
FacesUtil.callBackSucesso(false);
}
} else {
FacesUtil.addFatalMessage("Acesso Negado!!", "Você não tem permissão para executar essa ação");
FacesUtil.callBackSucesso(false);
}
}
/**
* Método responsável de passar um registro do tipo Agente para seja salvo
* no banco de dados.
*/
public void salvar() {
if (permissao.temPermissao(login.pegaUser().getPermissoes(), Constantes.AGENTE_ALTERAR)) {
mens = agenteService.salvarAgente(agente);
if (mens.equals("ok")) {
FacesUtil.addInfoMessage("Beleza", "Salvo no banco.");
FacesUtil.callBackSucesso(true);
} else {
FacesUtil.addErrorMessage("Aviso", mens);
FacesUtil.callBackSucesso(false);
}
} else {
FacesUtil.addFatalMessage("Acesso Negado!!", "Você não tem permissão para executar essa ação");
FacesUtil.callBackSucesso(false);
}
}
/**
* Método responsável de instanciar um novo registro do tipo Agente.
*/
public void incluir() {
if (permissao.temPermissao(login.pegaUser().getPermissoes(), Constantes.AGENTE_INCLUIR)) {
agente = new Agente();
nrCPF = null;
cidades = null;
estado = null;
setEditando(true);
FacesUtil.callBackEditando(editando);
} else {
FacesUtil.callBackSucesso(false);
FacesUtil.addFatalMessage("Acesso Negado!!", "Você não tem permissão para executar essa ação");
}
}
/**
* Método responsável de solicitar um determinado registro do tipo Agente
* para alteração.
*
* @param codigo id do Agente
*/
public void editar(Integer codigo) {
agente = agenteService.retornaAgente(codigo);
nrCPF = agente.getCpf();
estado = agente.getCidade().getEstado();
cidades = cidadeService.listaCidades(estado.getId());
setEditando(true);
FacesUtil.callBackEditando(editando);
}
/**
* Método que solicita a verificação de consistencia de um determinado CPF
*/
public void onBlurCPF() {
if (Uteis.naoNulo(getNrCPF())) {
if (Uteis.isCPF(getNrCPF())) {
if (agenteService.verificaCPF(getNrCPF())) {
FacesUtil.addFatalMessage("CPF JÁ EXTISTE NO SISTEMA!", "ATENÇÃO");
agente.setCpf(null);
} else {
agente.setCpf(getNrCPF());
}
} else {
FacesUtil.addFatalMessage("CPF Inválido!", "ATENÇÃO");
}
} else {
FacesUtil.addFatalMessage("CPF em Branco!", "ATENÇÃO");
agente.setCpf(null);
}
}
/**
* Método que traz uma lista de agentes conforme oque o usuário escreve
*
* @return Lista de Agentes
*/
public List<Agente> completeCliente(String query) {
List<Agente> agen = agenteService.listaPrimeiros(query);
return agen;
}
/**
* Método que faz uma solicitação de busca de endereço pelo cep
*/
public void trataEndereco() {
Endereco ender = enderecoService.retornaEndereco(agente.getCep());
agente.setBairro(ender.getBairro());
agente.setEndereco(ender.getEndereco());
agente.setCidade(cidadeService.retornaCidadePeloEstado(ender.getUf(), ender.getCidade()));
estado = estadoService.retornaEstadoSigla(ender.getUf());
if (Uteis.naoNulo(estado)) {
cidades = cidadeService.listaCidades(estado.getId());
}
}
/**
* Método que faz uma solicitação para trazer uma lista de cidades baseado
* no estado passado
*/
public void mudouEstado() {
setCidades(cidadeService.listaCidades(getEstado().getId()));
}
/**
* Método que inicializa o filtro novamente
*/
public void resetaFiltro(){
filtro = new FiltroAgente();
}
public void voltar() {
setEditando(false);
FacesUtil.callBackEditando(editando);
}
public LazyDataModel<Agente> getAgentes() {
return agentes;
}
public void pesquisar() {
}
public FiltroAgente getFiltro() {
return filtro;
}
public boolean isEditando() {
return editando;
}
public void setEditando(boolean editando) {
this.editando = editando;
}
public Agente getAgente() {
return agente;
}
public void setAgente(Agente agente) {
this.agente = agente;
}
public String getNrCPF() {
return nrCPF;
}
public void setNrCPF(String nrCPF) {
this.nrCPF = nrCPF;
}
public Map<String, String> getMapEstados() {
return mapEstados;
}
public void setMapEstados(Map<String, String> mapEstados) {
this.mapEstados = mapEstados;
}
public Estado getEstado() {
return estado;
}
public void setEstado(Estado estado) {
this.estado = estado;
}
public List<Estado> getEstados() {
return estados;
}
public void setEstados(List<Estado> estados) {
this.estados = estados;
}
public List<Cidade> getCidades() {
return cidades;
}
public void setCidades(List<Cidade> cidades) {
this.cidades = cidades;
}
Pessoal depois de semanas pesquisando consegui achar a solução para o problema e venho reportar para caso haja alguém precisando também. Como eu uso um ViewScoped do CDI ( javax.faces.view.ViewScoped ) eu deveria colocar então o Bean para ser gerenciado pelo CDI, e não estava sendo o caso.
Solução: Configurar o seguinte gerenciador de Beans no Web.xml (caso não tenham já feito isso):