GWT历史 - 州是否创建历史或历史结果?

时间:2013-02-10 12:46:33

标签: java gwt browser-history gwt-history

我对GWT历史机制的例子感到有些困惑。

查看并运行示例GWT History,它似乎不太好。

历史经常被解释为应用程序中的更改所导致的内容。

该示例有多个问题:

  • 初始状态也是空令牌和令牌“page0”

    - > “历史”背面在“离开应用程序”

  • 之前两次显示相同的页面
  • 历史和国家以某种方式间接同步。

    • 选项卡选择会导致选择事件,该事件设置新标记。设置令牌导致a 历史值更改,再次选择相同的选项卡(?)。这种模式有点令人费解。

从另一个角度看这个问题是不是错了?

我认为总是根据历史记录更改状态会更加清晰。

在这种情况下,ValueChange将实现“状态渲染”。想要更改状态的按钮不会直接执行,而是使用History.newItem()方法,并使用valueChange方法间接更改状态。

e.g。

public void onValueChange(ValueChangeEvent<String> event) {
    String token = event.getValue();
    if(token.isEmpty()){
        show("welcome");
    }else if(token.equals("registration")){
        show(token);
    }
}

还有一个想要显示注册的按钮:

welcome = new Button("Registration", new ClickHandler() {           
        @Override
        public void onClick(ClickEvent event) {
            History.newItem("registration");                
        }
    });

这是以某种方式使用历史来驱动应用程序状态。

这有什么不对,为什么到处都是相反?

1 个答案:

答案 0 :(得分:0)

GWT历史记录确实提供了设置令牌without causing the on history changed method to be called History.newItem("registration", false);

的方法

至于你单独关于GWT历史的建议,ValueChange会实现“状态渲染”,这在你需要传递多个String来设置状态的情况下是行不通的。在这种情况下,我设置了一个令牌,然后使用MVC将视图所需的任何数据转发到渲染。

无论如何,我绝对不会通过onValueChange来选择一个标签。我使用tabPanel.selectTab(tabNum);

之类的东西

FWIW,GWT思想的当前状态从历史变为使用Activities and Places

你可能希望看到它可能更好地与你想要做的事情保持一致。