Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用GWT';活动中的请求工厂_Gwt_Requestfactory - Fatal编程技术网

使用GWT';活动中的请求工厂

使用GWT';活动中的请求工厂,gwt,requestfactory,Gwt,Requestfactory,我的CustomerActivity类恰好也是MVP意义上的演示者。为响应用户的操作,调用以下代码: context.update(customer).fire(new Receiver<CustomerProxy>() { public void onSuccess(CustomerProxy response) { // set the view according to the response } }); 因为update方法已经返回了一个最新的客户,所以在

我的
CustomerActivity
类恰好也是MVP意义上的演示者。为响应用户的操作,调用以下代码:

context.update(customer).fire(new Receiver<CustomerProxy>() {
  public void onSuccess(CustomerProxy response) {
    // set the view according to the response
  }
});
因为
update
方法已经返回了一个最新的客户,所以在处理
EntityProxyChange
的过程中,我不需要再次获取客户;如果我可以避免的话,我不想承担再次调用服务器的费用

我希望
EntityProxyChange
类能够为我提供实体的版本号,我可以将其与缓存的客户版本进行比较。没有骰子


我想我可以在UpdateOperation的中间设置某种
标志,并在获取客户之前进行检查。人们就是这么做的吗?这个想法让我有点恶心。您能推荐一种更好的方法来编写一个活动,该活动侦听更改并对相同的实体类型进行更改吗?

我不确定这是否可行,但您可以尝试创建另一个事件总线:

final EventBus customerActivityEventBus = new SimpleEventBus();
使用此eventBus初始化新的RequestFactory,并在CustomerActivity中使用它

customerActivityRequestFactory = GWT.create(CustomerRequestFactory.class);
customerActivityRequestFactory.initialize(customeActivityEventBus);
CustomerRequest context = customerActivityRequestFactory.customerRequest();
您的CustomerActivity仍将侦听来自主eventBus的更改事件,但不会看到它触发的事件。 在其他活动中,根据您的需要,只收听customerActivityEventBus或同时收听customerActivityEventBus中的活动


当然,对于不是来自请求工厂的事件(即ActivityManager、PlaceHistoryHandler等),只保留一个主事件总线。

我不确定这是否可行,但您可以尝试创建另一个事件总线:

final EventBus customerActivityEventBus = new SimpleEventBus();
使用此eventBus初始化新的RequestFactory,并在CustomerActivity中使用它

customerActivityRequestFactory = GWT.create(CustomerRequestFactory.class);
customerActivityRequestFactory.initialize(customeActivityEventBus);
CustomerRequest context = customerActivityRequestFactory.customerRequest();
您的CustomerActivity仍将侦听来自主eventBus的更改事件,但不会看到它触发的事件。 在其他活动中,根据您的需要,只收听customerActivityEventBus或同时收听customerActivityEventBus中的活动


当然,只保留一个主事件总线用于非请求工厂的事件(即ActivityManager、PlaceHistoryHandler等)

侦听其他活动的客户记录更改的原因是什么?除非我弄错了,否则一次只有一个活动处于活动状态(正在显示)。因此,其他活动做什么并不直接重要。当CustomerActivity变为活动状态并删除EntityProxyChange处理程序时,检查客户记录的更改不是更好吗?我有两个正在运行的活动,每个活动都与显示器的不同区域有关。一个用于查看/更改客户设置,另一个用于更改客户名称和地址详细信息。也许最好有两个不同的实体:Customer和CustomerSettings。不过,它们确实构成了一个概念对象的一部分。倾听来自其他活动的客户记录变化的原因是什么?除非我弄错了,否则一次只有一个活动处于活动状态(正在显示)。因此,其他活动做什么并不直接重要。当CustomerActivity变为活动状态并删除EntityProxyChange处理程序时,检查客户记录的更改不是更好吗?我有两个正在运行的活动,每个活动都与显示器的不同区域有关。一个用于查看/更改客户设置,另一个用于更改客户名称和地址详细信息。也许最好有两个不同的实体:Customer和CustomerSettings。不过,它们确实构成了一个概念对象的一部分。这是个不错的主意。问题是另一个活动不会从CustomerActivity获得任何EntityProxy更改。我开始认为这两个活动需要被分解。在这种情况下,我所做的是让这两个活动抛出两个单独的事件。我知道需要编写更多的锅炉板代码,但这些确实是独立事件,即使在您的用例中也是如此。如果我必须重构我的代码,现在我会在其中有一个事件和一个标志来测试它是来自一个活动还是另一个活动。这是个不错的主意。问题是另一个活动不会从CustomerActivity获得任何EntityProxy更改。我开始认为这两个活动需要被分解。在这种情况下,我所做的是让这两个活动抛出两个单独的事件。我知道需要编写更多的锅炉板代码,但这些确实是独立事件,即使在您的用例中也是如此。如果我必须重构我的代码,现在我会在其中有一个事件和一个标志来测试它是来自一个活动还是另一个活动。