我正在使用GWTP,我发现了这个问题。
我在CustPresenter中有这段代码:
private List<String> dataList=new List<String>();
@Ovvrride
public onBind(){
myTextBox.setText("Test");
dataList.add("test");
}
好的,现在第一次打开页面,页面显示文本框中有字符串&#34; Text&#34; &安培; dataList有&#34; test&#34;值。在那个页面上,我点击了&#34; Go Back&#34;和#34;前进&#34; Web浏览器按钮(如Chrome或IE)。点击&#34;返回&#34;,然后它将显示上一页。点击&#34;前进&#34;它将显示客户页面&amp;我仍然看到字符串&#34; Text&#34;在客户页面的文本框中,但dataList没有&#34; test&#34;值?
发生了什么事?
是GWTP的错误还是我做错了什么?
注意:我正在使用GWT 2.50去年版本
答案 0 :(得分:1)
首次实例化Presenter时,onBind()
方法只调用一次。因此,它会根据您的需要填充TextBox
和dataList
。
然后,当您再次点击后退并再次前进时,您看到的View
是第一次调用onBind()
时填充的onBind()
。按向前不会再次运行ArrayList
所以您可能会以某种方式重新实例化onBind()
,然后不填充它,因为@Override
public onBind(){
private List<String> dataList = new ArrayList<String>();
myTextBox.setText("Test");
dataList.add("test");
}
已被调用。
试试这个:
onBind()
或者只需将onReset()
更改为onReveal()
或{{1}},因为只要展示了演示者,就会调用这些方法。
有些知识渊博的人可能想在此纠正我。