0

これは簡単な作業のように見えますが、ドキュメントの検索のどこかで-接続を逃しました。

GAEにメニューを保存していて、クエリの結果を返すことができます。

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]);
}

これらの結果を使用して、FlexTableにバインドしたいと思います。stockwatcherサンプルを使用して、IDをFlexTableにバインドすることができましたが、結果セットの他のフィールドをそれに関連付ける方法の概念が欠落しています。(GAEにあるフィールドは、mealID、mealType、mealDateです)

上から、mealIDをリストに入れていることがわかります。また、他のフィールドをフィルタリングするために何もしていないため、他のフィールドがクエリに存在する必要があることも知っています。実際のところ、コードを次のように変更すると、次のようになります。

食事.Add(myMeal.getMealID()、myMeal.getMealType()、myMeal.getMealDate());

すべてのデータを返しますが、フレックステーブルは各アイテムを1つの行の3つのフィールドではなく、新しい行として扱います。

したがって、私の質問は、FlexTableを結果セットにバインドできるように、レコードをキャプチャしてFlexTableに送信する方法を教えてください。

参考までに、クライアント側のコード:

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);
    }
}

フレックステーブルは次のように入力されます。

食事ID| 食事タイプ| 食事
日1| 1 | 1
2 | 2 | 2
3 | 3 | 3

私はそれをこのように移入させたい:

食事ID| 食事タイプ| 食事
日1| 朝食| 2012年12月22
日2| ランチ| 2012年12月22
日3| スナック| 2012年12月23日

ご入力いただきありがとうございます!

4

1 に答える 1

0

この質問は、GWTRPCを介してクラスオブジェクトを渡す際の問題の複製です。

そのリンクの詳細をたどると、oDeskからの雇われた助けはほとんど私を動かしませんでした。主な監視は、{appname} .gwt.xmlのエントリポイントクラスを必要とし、モデルクラスを共有パッケージに配置することでした。

于 2012-04-12T21:13:27.533 に答える