如何重建GWT历史堆栈?
我正在使用一个更大的应用程序,但有一个简单的示例演示了这个问题。为了方便起见,复制了以下示例:如何重建GWT历史堆栈?,gwt,gwt-history,Gwt,Gwt History,我正在使用一个更大的应用程序,但有一个简单的示例演示了这个问题。为了方便起见,复制了以下示例: public class HistoryTest implements EntryPoint, ValueChangeHandler { private Label lbl = new Label(); public void onModuleLoad() { Hyperlink link0 = new Hyperlink("link to foo", "fo
public class HistoryTest implements EntryPoint, ValueChangeHandler
{
private Label lbl = new Label();
public void onModuleLoad()
{
Hyperlink link0 = new Hyperlink("link to foo", "foo");
Hyperlink link1 = new Hyperlink("link to bar", "bar");
Hyperlink link2 = new Hyperlink("link to baz", "baz");
String initToken = History.getToken();
if (initToken.length() == 0)
{
History.newItem("baz");
}
// Add widgets to the root panel.
VerticalPanel panel = new VerticalPanel();
panel.add(lbl);
panel.add(link0);
panel.add(link1);
panel.add(link2);
RootPanel.get().add(panel);
History.addValueChangeHandler(this); // Add history listener
History.fireCurrentHistoryState();
}
@Override
public void onValueChange(ValueChangeEvent event)
{
lbl.setText("The current history token is: " + event.getValue());
}
}
问题是,如果刷新应用程序,历史堆栈就会被吹走。如何保存历史记录,以便用户刷新页面时,后退按钮仍然有用?我刚刚用Firefox和Chrome对我的应用程序进行了测试,页面刷新不会清除历史记录。你使用哪种浏览器?你有电话号码吗
<iframe src="javascript:''" id='__gwt_historyFrame' style='position:absolute;width:0;height:0;border:0'></iframe>
在你的HTML中?我刚刚用Firefox和Chrome对我的应用程序进行了测试,页面刷新没有清除历史记录。你使用哪种浏览器?你有电话号码吗
<iframe src="javascript:''" id='__gwt_historyFrame' style='position:absolute;width:0;height:0;border:0'></iframe>
在HTML中?GWT通过提供历史对象解决了这个问题。通过调用它的静态方法
History.newItem(“您的令牌”)
,您将能够将令牌传递到查询字符串中
但是,您需要注意,只要gwt应用程序中有历史记录更改,就会触发onValueChange(ValueChangeEvent事件){}
事件,并且在该方法中,您可以调用相应的页面。下面是我用来解决这个问题的步骤列表
历史记录中。(history.newItem(“新令牌”)
ValueChangeHandler
onValueChangeHandler(this)
listener添加到实现入口点的类中。确保该行是在实现入口点的类的onModuleLoad()
方法中添加的(重要的是在该方法中添加该行)(非常明显!)onValueChange(ValueChangeEvent事件)
{//callanewpage}方法也就是说,GWT通过提供历史对象解决了这个问题。通过调用它的静态方法
History.newItem(“您的令牌”)
,您将能够将令牌传递到查询字符串中
但是,您需要注意,只要gwt应用程序中有历史记录更改,就会触发onValueChange(ValueChangeEvent事件){}
事件,并且在方法中可以调用相应的页面。下面是我用来解决此问题的步骤列表
历史记录添加一个标记。(history.newItem(“new_token”)
ValueChangeHandler
onValueChangeHandler(this)
listener添加到实现入口点的类中。确保该行是在实现入口点的类的onModuleLoad()
方法中添加的(重要的是在该方法中添加该行)(非常明显!)onValueChange(ValueChangeEvent事件)
{//callanewpage}方法就是这样是的,历史框架已经准备好了。事实证明,这不是我能控制的技术问题,我现在问这个问题觉得很傻。有几件事在起作用。首先,GWT浏览器在刷新时会丢失历史记录(有时我忘了编译).第二,IE在历史记录方面表现得很奇怪。第三,一些开发人员没有正确地将历史标记推到堆栈上。感谢您为我查看此内容,抱歉给我带来麻烦。是的,历史框架已经就位。事实证明,这不是我控制下的一个技术问题,我现在问这个问题感到很愚蠢。有几个没有hings在起作用。首先,GWT浏览器在刷新时会丢失历史记录(有时我会忘记编译)。第二,IE在历史记录方面的行为异常。第三,一些开发人员没有正确地将历史标记推到堆栈上。感谢您帮我看一下,很抱歉给您添麻烦。