java - radiobuttongroup - vaadin reporting tool
¿Cómo puedo obligar a Vaadin a actualizar la pantalla? (5)
¿Está el primer ComboBox en modo "inmediato"?
Si no, probablemente debería ser: component.setImmediate (true).
Consulte https://vaadin.com/book/-/page/components.selection.html
Tengo una pequeña aplicación Vaadin que tiene varios campos de entrada (cuadros combinados, grupos selectos, etc.). El contenido de la mayoría de estos está determinado por el contenido elegido del primer ComboBox. Sin embargo, cuando selecciono algo en él, todos los demás permanecen en blanco hasta que hago clic en uno, en cuyo punto todos se actualizan. Este no es el comportamiento deseado, pero supongo que se debe a que el servidor está actualizado pero no actualiza la vista lateral del cliente. (Incluso cuando agrego requestRepaint () en el primer ValueChangeListener de Combobox)
Debe haber algún método para obligar a Vaadin a obtener los datos que quiero que muestren, incluso si no se hace clic en ningún otro componente.
EDITAR No tengo permiso para publicar respuestas a mi propia pregunta tan pronto, así que lo pongo aquí temporalmente:
Encontré que hay un método javascript que sincroniza cliente y servidor.
myComponent.getApplication().getMainWindow().executeJavaScript("javascript:vaadin.forceSync();");
El único problema que tengo ahora es que el ValueChangeListener en uno de mis comboboxes solo se dispara cuando hago clic en otro combobox (o el mismo dos veces). Es la cosa más extraña porque el segundo cuadro combinado, cuando está cargado, dispara su evento perfectamente.
¿Solicitó volver a pintar en los componentes correctos?
Tenga en cuenta que requestRepaint
marca el componente como sucio pero no significa que se volverá a pintar, ya que un cliente solo se puede actualizar cuando realiza una solicitud al servidor.
Consulte este hilo https://vaadin.com/forum/-/message_boards/view_message/231271 para obtener más información acerca de sus opciones (se ocupa de las actualizaciones de la interfaz de usuario debido al procesamiento del hilo de fondo).
Hay un truco que puede usar si ha configurado una fuente de datos para sus componentes que obliga a vaadin a volver a renderizarlos. Lo uso para actualizar tablas que tienen datos dinámicos
yourcomponent.setContainerDataSource(yourcomponent.getContainerDataSource());
Tuve el mismo problema, vea a continuación cómo se podría hacer en la versión 8.0.5 (a partir de 2017):
@Push
public class WebUi extends UI {
public void fireComponentUpdated() {
getUI().push();
}
}
En Vaadin 7 es suficiente poner esta línea en el método principal de UI.init (VaadinRequest):
UI.getCurrent().setPollInterval( 1000 );
si desea actualizar su interfaz de usuario (en este caso) cada segundo. De esta manera, le indica a la interfaz de usuario que sondee el servidor para cambios en el intervalo definido.
Tenga en cuenta que el tráfico excesivo del servidor puede ser un problema si tiene muchos usuarios que usan su aplicación al mismo tiempo.
En Vaadin 6 tendrás que jugar con ProgressIndicator (que podría ser invisible si lo deseas) e intentar hacer lo mismo que hace UI.getCurrent (). SetPollInterval (int) en Vaadin 7.