Question

J'ai service RPC qui retourne un objet de type GameEvent que étend de l'événement (résumé). Quand je reçois l'objet sur le client latérales, toutes les propriétés héritées de l'événement (eventId, copyEventId, gameTimeGMT) sont fixés à null tandis que sur le côté serveur, ceux-ci propriétés ont des valeurs.

public class GameEvent extends Event implements IsSerializable { 
    private String homeTeam; 
    private String awayTeam; 
    public GameEvent() { 
    } 
} 

// Annotation are from the twig-persist framework which should not 
// impact the serialization process. 
public abstract class Event implements IsSerializable { 
    @Key 
    protected String eventId; 
    @Index 
    protected String copyEventId; 
    protected Date gameTimeGMT; 
    protected Event() { 
    }
}

Mise à jour: J'utilise le cadre GWT-plateforme (mise en œuvre MVP). Voici l'appel du côté client de service. Le result.getGE() retourne l'objet GameEvent mais avec des propriétés null.

dispatcher.execute(
        new GetFormattedEventAction(
                id),
        new AsyncCallback<GetFormattedEventResult>() {

            @Override
            public void onFailure(Throwable caught) {
                caught.printStackTrace();
            }

            @Override
            public void onSuccess(
                    GetFormattedEventResult result) {
                FormattedGameEvent formattedGameEvent = new FormattedGameEvent(
                        result.getGE());
            }
        });

Le gestionnaire d'action:

public class GetFormattedEventActionHandler implements
        ActionHandler<GetFormattedEventAction, GetFormattedEventResult> {

    @Override
    public GetFormattedEventResult execute(GetFormattedEventAction action,
            ExecutionContext context) throws ActionException {
        GameEvent gameEvent = null;
        QueryResultIterator<GameEvent> rs = datastore.find().type(
                GameEvent.class).addFilter("copyEventId", FilterOperator.EQUAL,
                action.getEventId()).returnResultsNow();
        if (rs.hasNext()) {
            gameEvent = rs.next();
        }
        return new GetFormattedEventResult(gameEvent);
    }
}

Le résultat:

public class GetFormattedEventResult implements Result {

    private GameEvent e;

    @SuppressWarnings("unused")
    private GetFormattedEventResult() {
    }

    public GetFormattedEventResult(GameEvent gameEvent) {
        e = gameEvent;
    }

    public GameEvent getGE() {
        return e;
    }
}
Était-ce utile?

La solution

Je vais essayer de prendre un coup de poignard.

Vérifiez que la classe de l'événement est dans la sérialisation GWT whitelist (le fichier .gwt.rpc qui est généré pour chaque interface de service). Si ce n'est pas, vous pouvez avoir à GWT en ajoutant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top