GAE数据存储区使用JDO生成FlexTable

时间:2012-04-08 15:08:29

标签: google-app-engine gwt jdo gwt-rpc

这似乎是一项简单的任务,但在搜索文档的某个地方 - 我错过了连接。

我有一个存储在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)

从上面,我们可以看到我正在将feedID扔进List。 我也知道我的其他字段必须存在于查询中,因为我没有做任何事情来过滤它们。事实上,如果我将我的代码更改为:

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

它返回所有数据,但是flex表将每个项目视为一行而不是一行中的三个字段。

所以我的问题是:我应该如何捕获我的记录并将它们发送到我的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);
    }
}

flextable的填充方式如下:

mealID | mealType | mealDate
   1 | 1 | 1
   2 | 2 | 2
   3 | 3 | 3

希望它填充如下:

mealID | mealType | mealDate
   1 |早餐| 2012年12月22日
   2 |午餐| 2012年12月22日
   3 |小吃| 12/23/2012

提前感谢您的意见!

1 个答案:

答案 0 :(得分:0)

此问题与Problems passing class objects through GWT RPC

重复

按照该链接中的详细信息,来自oDesk的很少的雇佣帮助让我开始了。 主要的疏忽是需要{appname} .gwt.xml中的入口点类,并将模型类放在共享包中。