이것은 간단한 작업처럼 보이지만 문서를 검색하는 어딘가에서 - 연결을 놓쳤습니다.GAE Datastore 결과 JDO를 사용하여 FlexTable에
나는 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 샘플을 사용하여 FlexTable에 바인딩 된 ID를 얻을 수 있었지만 내 결과 세트의 다른 필드를 어떻게 묶는 지 개념이 누락되었습니다. (내가 GAE에있는 필드는 mealID, mealType 및 mealDate입니다.)
위에서 우리는 mealID를 List로 던지고있는 것을 볼 수 있습니다. 다른 필드들도 은 필터를 수행하지 않았기 때문에이 쿼리에 존재해야한다는 것을 알고 있습니다. 사실, 내 코드를 다음과 같이 변경하면
meals.Add (myMeal.getMealID(), myMeal.getMealDate());
모든 데이터를 반환하지만 flex 테이블은 각 행을 하나의 행에있는 세 개의 필드 대신 새로운 행으로 처리합니다.
제 질문은 : FlexTable을 결과 집합에 바인딩 할 수 있도록 내 레코드를 캡처하여 내 FlexTable로 보내는 방법은 무엇입니까? |
mealID : 참고로
, 클라이언트 측 코드 :
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는 다음과 같이 채워됩니다 식사 유형 | mealDate
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
내가 이렇게 채울 원하는 :
mealID | 식사 유형 | mealDate
1 | 아침 식사 | 12/22/2012
2 | 점심 | 12/22/2012
3 | 스낵 | 12/23/2012
미리 감사드립니다.