2012-04-08 4 views
0

Cela semble être une tâche simple, mais quelque part dans la recherche des docs-j'ai raté la connexion.Résultats GAE Datastore à FlexTable en utilisant JDO

J'ai un menu stocké dans GAE et puis retourner les résultats d'une requête:

public String[] getMeals() throws NotLoggedInException { 
    checkLoggedIn(); 
    PersistenceManager pm = getPersistenceManager(); 
    List<String> meals = new ArrayList<String>(); 

    try { 
     Query q = pm.newQuery(Meal.class, "user == u"); 
     q.declareParameters("com.google.appengine.api.users.User u"); 
     q.setOrdering("createDate"); 
     List<Meal> myMeals = (List<Meal>) q.execute(getUser()); 

     for (Meal myMeal : myMeals) { 
      meals.add(myMeal.getMealID()); 
     } 
    } finally { 
     pm.close(); 
    } 
    return (String[]) meals.toArray(new String[0]); 
} 

Avec ces résultats, je voudrais lier à un FlexTable. En utilisant l'échantillon stockwatcher, j'ai réussi à obtenir mon ID lié au FlexTable, mais je ne comprends pas comment je lie les autres champs de mon jeu de résultats. (Les champs que j'ai dans le GAE sont mealID, mealType et mealDate)

D'en haut, nous pouvons voir que je jette mealID dans une liste. Je sais aussi que mes autres champs doivent exister dans la requête car je n'ai rien fait pour les filtrer. En fait, si je change mon code à:

repas.Add (myMeal.getMealID(), myMeal.getMealType(), myMeal.getMealDate());

il retourne toutes les données, mais la table flexible traite chaque élément comme une nouvelle ligne au lieu des trois champs sur une ligne. Donc, ma question est: comment dois-je capturer mes enregistrements et les envoyer à mon FlexTable afin que je puisse lier le FlexTable au jeu de résultats?

Pour référence, le code côté client:

private void loadMeals() { 
    // load meals from server service MealService 
    mealService.getMeals(new AsyncCallback<String[]>() { 
     public void onFailure(Throwable error) { 
      handleError(error); 
     } 
     public void onSuccess(String[] meals) { 
      displayMeals(meals); 
     } 
    }); 

} 

private void displayMeals(String[] meals) { 
    for (String meal : meals) { 
     displayMenu(meal, meal, meal); 
    } 
} 

Le flextable se peuplé comme ceci:

mealID | mealType | repasDate
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3

Je veux à remplir comme ceci:

mealID | mealType | repasDate
1 | Petit déjeuner | 12/12/2012
2 | Déjeuner | 12/22/2012
3 | Snack | 12/12/2012

Merci d'avance pour votre contribution!

Répondre

0

Cette question est un double de Problems passing class objects through GWT RPC

Après les détails de ce lien, et peu d'aide de oDesk embauchées m'a aller. L'oubli principal consistait à utiliser la classe entrypoint dans {appname} .gwt.xml et à placer les classes du modèle dans des packages partagés.

Questions connexes