¿Es posible obtener la interfaz de usuario: valor del campo en el código de Java en GWT?

StackOverflow https://stackoverflow.com/questions/4249739

  •  27-09-2019
  •  | 
  •  

Pregunta

Esto puede sonar muy raro, pero vamos a empezar con un ejemplo:

<my:MagicWidget ui:field="someFieldName" fieldName="someFieldName"/>

Es más o menos asured que siempre querrá tener el mismo valor en la interfaz de usuario: campo y en fieldName. Es evidente que hay algo de duplucation en este código, me gustaría evitarlo y hacer que el fieldName opcional.

Por lo tanto, esto es lo que tengo en el código del widget:

@UiConstructor
public MagicWidget(String fieldName) {
    this.fieldName = fieldName;
}

Sin embargo, me gustaría, si es posible, para permitir que este constructor para ser opcional, y proporcionar un constructor por defecto que "por arte de magia" descubre que es ui: valor del campo:

@UiConstructor
public MagicWidget() {
    this.fieldName = /*some magic to get ui:field's value*/;
}

Me estaba preguntando si hay una manera de obtener el valor de "ui: campo" dentro de mi MagickWidget? (Los widget extiende Composite). Me temo que esto podría no ser posible, porque la mayoría de las veces no es tan útil, pero si alguien tiene una idea - no dude en proporción

PS:. Estoy usando GWT 2.1.0.RC1

¿Fue útil?

Solución

Como se sabe, la interfaz de usuario: campo está ahí para que pueda interactuar con un objeto de interfaz de usuario en código Java después de haber declarado con UiBinder. Así, por ejemplo, si se agrega un MagicWidget en una plantilla UiBinder, puede escribir

@UiField MagicWidget someWidget

con el fin de ser capaz de interactuar con él mediante programación. Tener su magia widget de cuenta del nombre de la referencia que apunta a que podría no ser tan útil (o posible), como se puede pasar la referencia a la espalda específica MagicWidget adelante y hacia atrás entre las diferentes partes de la aplicación. Una sola MagicWidget podría fácilmente tener varias referencias con diferentes nombres que apuntan a que es al mismo tiempo. Es por eso que es difícil de lo saquen "por arte de magia" en tiempo de ejecución. Sé que esto no es un gran problema si solo deseas este valor cuando se construye el objeto, pero tenga en cuenta que usted no está obligado a incluir una interfaz de usuario: campo cuando se agrega un widget usando UiBinder.

¿Por qué es importante que el Widget sabe su nombre de campo? Sabiendo que puede hacer que sea más fácil para proporcionar sugerencias acerca de otras maneras de lograr lo que está buscando hacer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top