RequestFactory を使用して GWT の CellTable の例を知っている人はいますか?そのテーブルは編集されていますか? テーブルにオブジェクトをリストし (各行が 1 つのオブジェクトで、各列が 1 つのプロパティ)、新しいオブジェクトを簡単に追加して編集できるようにしたいと考えています。Google の DynaTableRf の例は知っていますが、それは編集されていません。
Google と stackoverflow を検索しましたが、見つかりませんでした。私は RF のコンテキストに少し混乱してしまい、人々は「ドライバー」についても言及しました。
現在到達した場所を示すために、1 つの列のコードを添付します。
// Create name column.
Column<PersonProxy, String> nameColumn = new Column<PersonProxy, String>(
new EditTextCell()) {
@Override
public String getValue(PersonProxy person) {
String ret = person.getName();
return ret != null ? ret : "";
}
};
nameColumn.setFieldUpdater(new FieldUpdater<PersonProxy, String>() {
@Override
public void update(int index, PersonProxy object, String value) {
PersonRequest req = FaceOrgFactory.getInstance().requestFactory().personRequest();
PersonProxy eObject = req.edit(object);
eObject.setName(value);
req.persist().using(eObject).fire();
}
});
およびデータプロバイダーの私のコード:
AsyncDataProvider<PersonProxy> personDataProvider = new AsyncDataProvider<PersonProxy>() {
@Override
protected void onRangeChanged(HasData<PersonProxy> display) {
final Range range = display.getVisibleRange();
fetch(range.getStart());
}
};
personDataProvider.addDataDisplay(personTable);
...
private void fetch(final int start) {
lastFetch = start;
requestFactory.personRequest().getPeople(start, numRows).fire(new Receiver<List<PersonProxy>>() {
@Override
public void onSuccess(List<PersonProxy> response) {
if (lastFetch != start){
return;
}
int responses = response.size();
if (start >= (personTable.getRowCount()-numRows)){
PersonProxy newP = requestFactory.personRequest().create(PersonProxy.class);
response.add(newP);
responses++;
}
personTable.setRowData(start, response);
personPager.setPageStart(start);
}
});
requestFactory.personRequest().countPersons().fire(new Receiver<Integer>() {
@Override
public void onSuccess(Integer response) {
personTable.setRowCount(response+1, true);
}
});
}
最後のオブジェクトに新しい空のオブジェクトを挿入しようとしています。そして、ユーザーがそれを入力すると、その後に新しいものを挿入します。しかし、コードは機能していません。ユーザーは、別の RequestContext によって以前に編集されたオブジェクトを編集しようとしていると言います。
ジレンマ:
* あまりにも多くのコンテキストを作成していませんか?
* クライアント側で作成された celltable に新しいオブジェクトを適切に挿入する方法は?
* 編集可能なオブジェクトを取得したときの fieldUpdater で - テーブルに挿入し直すか、それとも忘れるべきですか?
助けてくれてありがとう。