RequestFactoryEditorDriver obtiene datos editados después de vaciar

Permítanme comenzar con una solución, pero realmente no creo que sea elegante. Por lo tanto, estoy buscando una forma más limpia de hacer esto.

Tengo un EntityProxy mostrado en un panel de vista. El panel de vista es un RequestFactoryEditorDriver que solo usa el modo de visualización. El usuario hace clic en un elemento de datos y abre un editor emergente para editar un elemento de datos de EntityProxy con unos pocos bits más de datos que los que se muestran en el panel de visualización. Cuando el usuario guarda el elemento, necesito el panel de vista para actualizar la pantalla.

Me encontré con un problema porque el RequestFactoryEditorDriver del flujo del editor emergente no le permite acceder a los datos editados. El controlador usa el mismo pasado en contexto que usted usa para enviar datos al servidor. Sin embargo, el contexto devuelto por vaciado solo permite unReceiver<Void> incluso si lo convierte al tipo de contexto que almacenó en el controlador del editor en la llamada edit (). Tampoco parece enviar un evento EntityProxyChanged, por lo que no pude escuchar eso y actualizar la vista de visualización. - rasca esto - Ahora veo que este evento no es para este caso de uso]

La solución que encontré fue cambiar mi objeto de dominio persiste para devolver la entidad recién guardada. Luego cree el editor emergente como este

editor.getSaveButtonClickHandler().addClickHandler(createSaveHandler(driver, editor));
                // initialize the Driver and edit the given text.
                driver.initialize(rf, editor);
                PlayerProfileCtx ctx = rf.playerProfile();
                ctx.persist().using(playerProfile).with(driver.getPaths())                      
                        .to(new Receiver<PlayerProfileProxy>(){
                    @Override
                    public void onSuccess(PlayerProfileProxy profile) {
                        editor.hide();
                        playerProfile = profile;
                        viewDriver.display(playerProfile);
                    }                               
                });
                driver.edit(playerProfile, ctx);
                editor.centerAndShow();

Luego, en el controlador de guardado, simplemente disparo () el contexto que obtengo de la descarga (). Si bien este enfoque funciona, i, t no parece correcto. Parece que debería suscribirme al evento cambiado de entidad en la vista de visualización y actualizar la entidad y la vista desde allí. - una vez más scratch, la misma razón que antes] Además, este enfoque guarda la entidad completa, no solo los bits modificados, lo que aumentará el uso del ancho de banda.

Lo que creo que debería suceder, es que cuando vacías la entidad, debe actualizar 'optimistamente' la versión administrada por RF de la entidad y disparar el evento de cambio de proxy de entidad. Solo revierte la entidad si algo salió mal en el guardado. El guardado real solo debe enviar los bits modificados. De esta manera, no es necesario volver a captar toda la entidad y enviar los datos completos por cable dos veces.

¿Hay una mejor solución?

Respuestas a la pregunta(4)

Su respuesta a la pregunta