Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!