我从请求工厂的dynatableref示例开始。我读了请求工厂文件。但我仍然不清楚生命周期或客户端到服务器的流程。 我想打电话给服务器。还插入数据和更新网格。使用RPC调用很容易。但我不明白如何处理Request Factory。 这是请求工厂的一种方法。它自动调用服务器的persist方法。它也会自动刷新网格。我可以告诉它有什么用吗?
context.fire(new Receiver<Void>() {
@Override
public void onConstraintViolation(Set<ConstraintViolation<?>> errors) {
// Otherwise, show ConstraintViolations in the UI
dialog.setText("Errors detected on the server");
editorDriver.setConstraintViolations(errors);
}
@Override
public void onSuccess(Void response) {
// If everything went as planned, just dismiss the dialog box
dialog.hide();
}
});
我也想将一些数据编辑到网格中。这种方法对我有帮助吗?或者我必须写其他方法。 我写了其他方法,如
requestFactory.schoolCalendarRequest().savePerson(personProxy).fire(new Receiver<PersonProxy>() {
@Override
public void onSuccess(PersonProxy person) {
// Re-check offset in case of changes while waiting for data
dialog.hide();
}
});
这不是刷新网格。为什么呢?
答案 0 :(得分:1)
RuequestFactory
的流客户端 - 服务器类似于RPC
或任何XMLHTTP
请求
1)您在服务器上调用远程方法。
2)您在Receiver
对象(Callback
对象)中收到回复。在onSeccess
方法中,如果一切顺利,您将获得返回的对象。 onFailure
如果出现问题,您会收到错误。
因此,要从服务器检索的数据中填充Person表,代码应该类似于
requestFactory.schoolCalendarRequest().getPersonList(param1).fire(new Receiver<List<PersonProxy>>() {
@Override
public void onSuccess(List<PersonProxy> personList) {
personTable.getDataProvider().setList(personList);
}
});
现在,当您编辑人员(例如姓名)时,在您请求RequestContext
之前初始化并使用相同的fire
非常重要。因此,更新Person名称的部分应该类似于
column.setFieldUpdater(new FieldUpdater<Person, String>() {
@Override
public void update(PersonProxy personProxy, String value) {
RequestContext requestContext = requestFactory.schoolCalendarRequest()
PersonProxy personProxy= requestContext.edit(personProxy);
personProxy.setName(value);
requestFactory.schoolCalendarRequest().savePerson(personProxy).fire(new Receiver<PersonProxy>() {
@Override
public void onSuccess(PersonProxy person) {
//Do something after the update
}
});
}
});
与RequestFactory
的互动应放在Presenter
中,因此您应该考虑实施MVP
模式。