Problema con FacesContext
Hola tengo el siguente metodo dentro de mi aplicacion donde constantemente esto ejecutandolo cada 3 segundos y nunca me reconoce la interfaz visual de mi aplicacion y si esta visible...Saludos y gracias...si no queda claro postear yo le respondo gracias
public void temporizador() {
System.out.println("Entro a TEMPORIZADOR");
ses = Executors.newScheduledThreadPool(1);
// Ejecutar dentro de 4 segundos, repetir cada 3 segundos
ses.scheduleAtFixedRate(this, 4 * 1000, 3 * 1000, TimeUnit.MILLISECONDS);
}
public void run() {
System.out.println("Entro a RUN");
FacesContext fc = FacesContext.getCurrentInstance();
if(fc != null){
UIComponent comp0 = fc.getViewRoot().findComponent("form_dashboard:id_office0");
UIComponent comp1 = fc.getViewRoot().findComponent("form_dashboard:id_office1");
UIComponent comp2 = fc.getViewRoot().findComponent("form_dashboard:id_office2");
UIComponent comp3 = fc.getViewRoot().findComponent("form_dashboard:id_office3");
UIComponent comp4 = fc.getViewRoot().findComponent("form_dashboard:id_office4");
UIComponent comp5 = fc.getViewRoot().findComponent("form_dashboard:id_office5");
UIComponent comp6 = fc.getViewRoot().findComponent("form_dashboard:id_office6");
UIComponent comp7 = fc.getViewRoot().findComponent("form_dashboard:id_office7");
UIComponent comp8 = fc.getViewRoot().findComponent("form_dashboard:id_office8");
}
if (office0 != null) {
if (generalServices.dameTiempoAtención(office0) != atencion0) {
atencion0 = generalServices.dameTiempoAtención(office0);
System.out.println("ACTUALIZO ATENCION OFFICE 0");
}
if (generalServices.dameTiempoEspera(office0) != espera0) {
espera0 = generalServices.dameTiempoEspera(office0);
System.out.println("ACTUALIZO ESPERA OFFICE 0");
}
Float provisional0 = Redondear2Decimales(generalServices.damePorcentClientDESERT(office0));
if (provisional0 != abandonan0) {
abandonan0 = provisional0;
System.out.println("ACTUALIZO % OFFICE 0");
}
}
}
}
- Inicie sesión o regístrese para enviar comentarios
FacesContext.getCurrentInstance()
Hola Yudiel,
Al inspeccionar tu código me doy cuenta de esta línea:
La cual esta siendo llamada desde el método run del
que estas pasando como parametro al
. Si mal no recuerdo (lo que pasa es que usaba JSF hace mucho) este metodo estatico te regresa el
para el request.
Desgraciadamente (en las implementaciones que he usado) este método está implementado con un
. Lo que significa que únicamente te va a regresar lo que le pides si la llamada se ejecuta en el mismo
que despacho tu request i.e. si lo llamas desde el
que despacha tu método
te regresara
por que es un Thread diferente.
Quiero suponer que debido a lo anterior tu estas haciendo el check
. No tengo el contexto de lo que quieres hacer pero pues supongo que deseas actualizar esos componentes en un hilo aparte; en ese caso pues simplemente podrias guardar el
como un campo de tu clase... Sin embargo no se si esto te de problemas despues si es que tienes mas de un request y este objeto deje de servirte o sea reemplazado por el contexto de otro hilo (en otro request).