Я пишу проект в GWT поверх GAE с помощью SmartGWT.
У меня есть БД с объектом, у каждого из которых есть объект "отец" и "сыновья", и я использую TreeGrid для их представления.У меня уже есть служба GWT-RPC, которая получает сыновей данного узла.
Теперь мне нужно как-то расширить класс DataSource st, когда узел дерева открыт, я смогу использовать свой собственный сервис для поиска и получения его сыновей, а затем вернуть их как то, что может сделать TreeGrid.работать с.
Я знаю, что должен переопределить transformRequest и transformResponse, но понятия не имею, как.Буду очень признателен за любой пример кода / объяснение!
Это то, что я имею до сих пор - не уверен, что это даже отдаленно правильно:
budgetTree.setDataSource(new DataSource() {
@Override
protected Object transformRequest(final DSRequest dsRequest) {
expensesService.getExpensesByYear(2008,
new AsyncCallback<ExpenseRecord[]>() {
@Override
public void onSuccess(ExpenseRecord[] result) {
System.out.println("Returned " + result.length + " expense record ");
dsRequest.setAttribute("dsResult", result);
}
@Override
public void onFailure(Throwable caught) {
System.out.println("Failed to run query");
}
});
return dsRequest;
}
@Override
protected void transformResponse(DSResponse response, DSRequest request,
Object data) {
Record[] recs = request.getAttributeAsRecordArray("dsResult");
response.setData(recs);
super.transformResponse(response, request, data);
}
});