J'utilise GWT 2.4 avec l'éditeur et demande des frameworks d'usine. J'ai un modèle, Trip, qui a une adresse 'origine' et une 'destination' adresse. Lorsque vous créez un voyage via l'interface utilisateur, les deux adresses sont créées automatiquement et affectées au voyage. L'utilisateur remplit les détails et enregistre. Pour une raison quelconque, je reçois l'erreur gelée autobean en essayant de persister sur le serveur. Ce code a fonctionné dans GWT 2.3 et je ne peux pas revenir en arrière. J'espère que ce n'est pas un bug dans GWT 2.4. Voici quelques exemples de code de ce que je fais:GWT Autobean gelé lors de la sauvegarde du graphique
RequestContext request = requestFactory.request();
TripProxy trip = request.create(TripProxy.class);
trip.setOrigin(request.create(AddressProxy.class));
trip.setDestination(request.create(AddressProxy.class));
driver.edit(trip, request);
this.trip = trip;
// … on save button clicked (different method)
RequestContext request = driver.flush();
request.save(trip).with(driver.getPaths()).fire(someReceiverImpl);
Résultats dans:
java.lang.IllegalStateException: The AutoBean has been frozen
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.checkFrozen(AbstractAutoBean.java:195)
at com.google.web.bindery.autobean.shared.impl.AbstractAutoBean.setProperty(AbstractAutoBean.java:270)
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
L'appel à fire
se termine avec succès, mais quelque part à l'intérieur requestfactory, l'erreur ci-dessus est levée. Curieusement, l'entité est enregistrée sur le serveur mais les validations ne sont pas appliquées. Lorsque je simplifie le modèle et supprime les associations d'adresses, la validation et sauvegarde fonctionne. Mon problème principal est l'erreur gelée autobean; la substance de validation est secondaire.
EDIT: Après un examen plus approfondi, j'ai trouvé que les entités le rendaient bien au serveur et persistaient comme prévu. C'est à son retour que l'exception ci-dessus est levée. AddressProxy est un ValueProxy et il semble que RF n'aime pas que Trip revienne avec ces associations. Retourner null 'répare' le problème mais cela ne fonctionnera évidemment pas à long terme.
Ceci est la réponse que je cherchais merci. –