Pregunta

Mi pregunta es: ¿cuál es la mejor manera de enviar los datos de mis Java EE entidad anotada frijoles a la clientside usarlo en una cuadrícula, por ejemplo? Seguramente que podría hacer los modelos de cliente extendidos-BaseModel para cada entidad de forma manual, pero me pregunto lo que podría ser la mejor práctica aquí. Necesito un tutorial paso a paso, si es posible.

¿Fue útil?

Solución

He estado usando ext-GWT (GXT) por alrededor de un año y siento su dolor!

Por lo que he aprendido hasta ahora, parece que hay 3 estrategias para la transferencia de los granos de ida y vuelta entre el cliente y el servidor:

Aquí está una descripción de cada estrategia:

  1. Crear un POJO cliente / frijol que se extiende por BaseModel cada objeto lado del servidor bean / pojo / bean de entidad.
  2. Compartir POJO / frijol de entre cliente y servidor
  3. Convertir lado del servidor POJO / frijoles en JSON antes de enviar al cliente y a continuación, utilizar objetos JSON (Javascript) en el lado del cliente.

Por supuesto, hay compensaciones a cada uno.

Estrategia # 1 se integra muy bien en GXT. Se puede utilizar de GXT construidas en las tiendas y enlaces. Esta es la estrategia que he usado en una aplicación de producción y ha funcionado, pero he encontrado tedioso para duplicar las habas en el cliente y el servidor. En lo personal, también he encontrado que de ExtJS (y GXT) Tienda / mecanismo de unión puede ser demasiado complicado y difícil de extender a casos de esquina.

Estrategia # 2: Ésta es la estrategia que vamos a usar más probable es que en mi próximo proyecto GXT. La desventaja es que usted tiene que hacer usted es la forma propia y la rejilla de la unión de GXT en el cliente. Pero la ventaja es que se pueden compartir todos sus frijoles / POJOs. He aquí una breve descripción de los detalles de implementación:

En el árbol de fuentes del lado del servidor, agregar un archivo .gwt.xml en el paquete raíz que contiene las clases POJO servidor / frijol. Por ejemplo: He creado este archivo con el nombre "GWT-models.gwt.xml" bajo com.daveparoulek.gwt.server.models

<module rename-to='gwt-models'>
    <inherits name='com.google.gwt.user.User' />
    <source path="client" />
</module>

En el ejemplo anterior, los granos se encuentran realmente dentro de com.daveparoulek.gwt.server.models.client.

Una vez que tenga que la configuración, puede configurar su proyecto GWT cliente para incluir el código de src en el interior com.daveparoulek.gwt.server.models mediante la adición de una etiqueta de "heredar" a gwt.xml archivo de su proyecto de cliente GWT por ejemplo:

<inherits name="com.daveparoulek.gwt.server.models" />

Estrategia # 3: Después de ver un par de conversaciones de Google en GWT, esto parece ser su mejor forma de tratar con objetos en el lado del cliente. Aunque, esto lleva a la creación de un tipo de superposición JSON para cada POJO lado del servidor / frijol. Esto también no encaja perfectamente en el mundo GXT. Haga clic aquí para una muy buena introducción a este concepto.

Otros consejos

No soy un especialista, pero parece que la gente está utilizando Gilead (que tiene un tutorial) + GWT + GXT para facilitar el proceso.

BeanModelFactory es una enorme pérdida de tiempo. De acuerdo con la Sencha Ayuda docs , sólo puede llamar a getFactory en un BeanModelFactory lo que el regresa de una llamada al método get() estática. Cuando después de su ejemplo este valor de retorno resulta ser una instancia de la propia clase BeanModelFactory, que tiene un método getFactory() sin aplicarse (abstract).

Para que pueda obtener un buen puntero nulo de la nada. Gracias por nada.

Me se pegaba a la estrategia # 1.

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