Pregunta

Soy nuevo en GWT y RequestFactory, así que estoy codificando una aplicación de prueba simple usando GWT RequestFactory para RPC y objetivado para ORM.

Tengo una entidad de persona simple y pude hacer que todas las operaciones de Crud funcionen bien. Quería intentar agregar un tipo de valor para almacenar direcciones como una propiedad @EmbedDed en mi clase de persona, al igual que se muestra en el sitio de Google Developer. Así que agregué una dirección de POJO simple, direcciones que extienden valueProxy, etc.

Termino agregando un par de líneas de código a mi llamada SolicFactory así:

PersonRequest req = rf.personRequest();
AddressProxy address = req.create(AddressProxy.class);  // Added this
address.setCity(city);                                  // this
PersonProxy person = req.create(PersonProxy.class);
person.setName("Joe");
person.setPhone("215-555-1212");
person.setAddress(address);                             // and this.
req.save(person).fire();

Entonces, todo se compila perfectamente y atraviesa el código, todo está bien en el lado del cliente. En el lado del servidor, obtengo inesperedExcPetion: no hay tipo para token ...

Spéficamente parece quedar atrapado en este método aquí bajo com.google.web.bindery.requestfactory.server.resolverserviceLayer:

@Override
public Class<? extends BaseProxy> resolveClass(String typeToken) {
  String deobfuscated = deobfuscator.getTypeFromToken(typeToken);
  if (deobfuscated == null) {
    die(null, "No type for token %s", typeToken);
  }

Supongo que está tratando de determinar el tipo del contexto de solicitud, pero no me está ayudando a ver lo que falta de mi parte. ¿Qué causaría esto?

¿Fue útil?

Solución 2

Esta publicación de Thomas Broyer el Kit de herramientas web de Google Google Group resolvió el problema. Aquí hay una cita:

Procesamiento de anotaciones en eclipse es apenas utilizable. Ayer luché durante horas para que refresque el DeobfuscatorBuilder generado. IIRC, actualizo el proyecto en Eclipse, luego lo reinicié, luego deshabilité el procesamiento de anotaciones, eliminé la carpeta .APT_Generada y vuelve a habilitar el procesamiento de anotaciones. Si puede usar Maven para su proyecto, ¡apuesto a que funciona mucho mejor allí! (Tuve el problema en el proyecto GWT -User en sí, por lo que no era una opción para mí) la próxima vez, intentaré configurar una acción de compilación (o lo que sea) para ejecutar "Javac -proc: solo" en lugar de Confiar en el apto incorporado (y terriblemente buggy) de Eclipse.

Otros consejos

Probablemente te estás perdiendo la necesidad with().

Prueba algo como req.save(person).with("address").fire();

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