GWTP Presenter prepareFromRequest-将数据加载到从事件检索的表单中
在过去的几周里,我一直在尝试GWTP,并用它构建了一个小项目 问题是: 我有一个网格小部件(附带的屏幕截图),它显示了一个数据列表。选中一行的复选框并单击编辑请求,我进入一个详细信息页面 由于我已经在summary screen presenter本身的详细信息页面中显示了所有数据(模型),所以我不想再次从数据库中获取它 因此,我做了以下工作:GWTP Presenter prepareFromRequest-将数据加载到从事件检索的表单中,gwt,gwtp,Gwt,Gwtp,在过去的几周里,我一直在尝试GWTP,并用它构建了一个小项目 问题是: 我有一个网格小部件(附带的屏幕截图),它显示了一个数据列表。选中一行的复选框并单击编辑请求,我进入一个详细信息页面 由于我已经在summary screen presenter本身的详细信息页面中显示了所有数据(模型),所以我不想再次从数据库中获取它 因此,我做了以下工作: 在选择并单击“编辑请求”时,我将获得所选模型 向详细信息页面发出位置请求 触发编辑事件,并将所选模型作为参数传递 我知道我做错了,因为当我选择一个项目并
编辑事件
,并将所选模型作为参数传递李>
我知道我做错了,因为当我选择一个项目并点击编辑请求时,详细信息页面还没有收到所选项目。它只显示一个空白页,没有填充任何数据(显然,因为在事件触发之前已经到达了该位置)
当前代码:
RequestModel selectedItem = getView().getGrid().getSelectionModel().getSelectedItem();
PlaceRequest placeRequest=new PlaceRequest(NameTokens.initiationedit);
getEventBus().fireEvent(new RequestEditEvent(selectedItem, PHASE_INITIATION));
placeManager.revealPlace(placeRequest);
个人想法解决方案:我可以使用所选项目的id
参数发出placerequest,然后覆盖useManualReveal
和prepareFromRequest
从数据库获取新数据,而不是触发事件
但是有没有一种方法可以避免对预先存在的数据调用数据库
@ProxyEvent
(请参阅)根据@Chris Lercher的回答,我使用了ProxyEvent。实施细节如下 在我的
RequestEditPresenter
(详细信息演示器)中,我实现了事件处理程序RequestEditHandler
,如中所示
public class RequestEditPresenter extendsPresenter<RequestEditPresenter.MyView, RequestEditPresenter.MyProxy> implements RequestEditHandler{
@Override
@ProxyEvent
public void onRequestEdit(RequestEditEvent event) {
getView().setModelToView(event.getRequestModel());
...various other initiation process...
placeManager.revealPlace(new PlaceRequest(NameTokens.initiationedit));
}
因为详细信息演示者是一个
场所
,所以我使用了placeManager。对于没有NameToken
的演示者,只需现场调用forceReveal()
方法即可。我使用了ProxyEvent,工作起来很有魅力。为了完整起见,让我补充一下细节