Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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
Java GWTP演示者和视图保留旧值_Java_Gwt_Gwtp - Fatal编程技术网

Java GWTP演示者和视图保留旧值

Java GWTP演示者和视图保留旧值,java,gwt,gwtp,Java,Gwt,Gwtp,我正在使用GWTP,我的所有演示者都扩展了Presenter类。如果我从A导航到B,然后再导航回A,则表格A中的旧值仍会显示,而不是新值,就像它显示旧值的副本一样 如何使应用程序创建演示者的新实例以避免显示旧值?演示者和视图的实例化成本通常很高,因此GWTP建议将两者都用作单个实例,视图是不必要的,因为演示者将保留该实例,使其行为类似于内部单个实例。在这种情况下,您当前的情况下,只需在生命周期的某个阶段prepareFromRequest、onReveal或onReset上重置presenter

我正在使用GWTP,我的所有演示者都扩展了Presenter类。如果我从A导航到B,然后再导航回A,则表格A中的旧值仍会显示,而不是新值,就像它显示旧值的副本一样


如何使应用程序创建演示者的新实例以避免显示旧值?

演示者和视图的实例化成本通常很高,因此GWTP建议将两者都用作单个实例,视图是不必要的,因为演示者将保留该实例,使其行为类似于内部单个实例。在这种情况下,您当前的情况下,只需在生命周期的某个阶段prepareFromRequest、onReveal或onReset上重置presenter状态,具体取决于视图的工作方式

请注意,这样做要比看起来容易得多,如果您的视图与演示者不同步(这应该是您的情况),则只要将代码从更新频率较低的生命周期示例construction或onBind移动到更新频率较高的示例onReveal或onReset,然后在导航演示者并显示视图时,这将被正确更新,单例问题将变得无关紧要

如果确实要创建非单例演示者,可以手动执行绑定,而不是使用AbstractPresenterModulebindPresenter。如果您尝试在多个位置引用演示者,这可能有点危险,而且在重置过程中演示者也将是相同的,但我认为在每个展示上都会有一个新实例