¿Error al vincular la vista con el presentador?
Frecuentes
Visto 2,199 veces
1
Recibo este error cuando ejecuto la aplicación GWT:
java.lang.AssertionError: This UIObject's element is not set; you may be missing a call to either Composite.initWidget() or UIObject.setElement()
public class MainView extends Composite implements HeaderPresenter.MyView {
// Code omitted
}
en la ginebra ClientModule.java función configure () Tengo este código:
bindPresenter(HeaderPresenter.class, HeaderPresenter.MyView.class,
MainView.class, HeaderPresenter.MyProxy.class);
En la clase de vista, initWidget() se llama correctamente y se pasa con un widget, ¿qué podría estar causando el error?
2 Respuestas
3
Este error ocurre cuando UIObject.setElement
no se llama. si estas llamando Composite.initWidget
con un widget no nulo, asegúrese de que ese widget esté configurando su propio elemento correctamente. Si se trata de un widget GWT estándar, debería estar haciendo eso, pero de lo contrario, es posible que el widget haya pasado a initWidget
no está configurado correctamente.
contestado el 03 de mayo de 12 a las 17:05
Tuve que codificar el widget que se inserta en initWidget() fuera del constructor, es decir, HorizontalPanel panel = new HorizontalPanel() en lugar de inicializarlo en la construcción (aunque inicializándolo antes de pasar a initWidget, por supuesto) - quarks
Y ese es el problema: está agregando el widget raíz después de que el compuesto se haya agregado a su elemento principal, por lo que no se puede dibujar nada. Así es como funciona el sistema, initWidget debe ser llamado para entonces. Un posible truco podría ser initWidget con un panel, luego agregar el HorizontalPanel a que panel. - colin alworth
3
Así es como creo un Composite
que usaré más adelante en una Vista.
public class MyCustomBox extends Composite {
private static MyCustomBoxUiBinder uiBinder = GWT.create(MyCustomBoxUiBinder.class);
interface MyCustomBoxUiBinder extends UiBinder<Widget, MyCustomBox> {
}
public MyCustomBox() {
initWidget(uiBinder.createAndBindUi(this));
}
}
contestado el 03 de mayo de 12 a las 22:05
¿Qué clase extiende MyCustomBoxUiBinder? - quarks
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas gwt dependency-injection guice gwt-gin gwt-platform or haz tu propia pregunta.
Mi aplicación solía trabajar con la vista que uso en bindPresenter, que se basa en la vista de UiBinder. Sin embargo, por alguna razón, necesito usar una Vista que es un widget GWT simple que se extiende desde Compuesto. Ahora no funcionará. - quarks
Deberías publicar más código sobre tu
MainView
clase. - Sydney