Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
Cómo configurar Vaadin 8 LoadingIndicatorConfiguration con un clic de botón

Estoy usando Vaadin 8 y LoadingIndicator me está causando algunos problemas. Para el 90% del tiempo necesito que se configure en consecuencia:

  • 1er retraso == 300ms
  • 2do retraso == 600ms
  • 3er retraso == Integer.MAX

Pero para algunas acciones específicas, necesito que esto se modifique, de modo que la superposición (indicador de carga) se muestre instantáneamente, en lugar de esperar los 300 ms preconfigurados. Por ejemplo, cuando hago clic en un botón, quiero que se muestre al instante. Esto, sin embargo, es problemático, porque si configuro el primer retraso en cero durante el procesamiento del evento de clic de botón, solo se aplica después de que finaliza el evento. Por esta razón, quiero ejecutar algún método JS, que establecería este retraso en cero. Intenté llamar directamente al método JS para mostrar la superposición al instante, pero todavía está influenciado por LoadingIndicatorConfiguration.

Editar: por el momento, la solución funcional (no la mejor) que se me ocurrió es crear una clase CSS que imite el v-loading-indicator y crear un método JavaScript que agregue un elemento div al comienzo del elemento del body y luego agrega esta clase CSS al elemento div . Luego, cuando se crea el botón, ejecuto (nuevamente usando JS; esto es fundamental) addEventListener en este div y agrego el método para mostrar el indicador de carga.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Normalmente, la interfaz de usuario en el navegador se actualiza solo después de que la solicitud se haya procesado por completo. Por lo tanto, configurar el retraso antes de que se haga clic en el botón funciona, pero no cuando se hace después del clic. Para cambiar esto, debe habilitar Push para actualizaciones inmediatas de la interfaz de usuario. Pruebe el siguiente código con y sin Push y debería ver una diferencia en el comportamiento del indicador de carga.

 @Push public class DemoUI extends UI { protected void init(VaadinRequest vaadinRequest) { VerticalLayout layout = new VerticalLayout(); layout.setSizeFull(); Button loadingButton = new Button(); loadingButton.addClickListener(e -> { getLoadingIndicatorConfiguration().setFirstDelay(0); getLoadingIndicatorConfiguration().setSecondDelay(1000); getLoadingIndicatorConfiguration().setThirdDelay(2500); try { Thread.sleep(5000); } catch (InterruptedException e1) { }); layout.addComponent(button); setContent(layout); } } @WebServlet(value = "/*", asyncSupported = true) @VaadinServletConfiguration(productionMode = false, ui = DemoUI.class) public static class Servlet extends VaadinServlet { }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda