【问题标题】:GWT real world token usageGWT 真实世界令牌使用
【发布时间】:2011-05-12 14:40:31
【问题描述】:

所以看起来在使用 GWT 活动和地点时,总是需要一个令牌。我的问题是,您会为通常没有任何额外参数的页面提供什么标记,例如联系我们页面或地点。目前它看起来像 /#ContactUsPlace:token 附加了一个随机令牌。

其他开发者如何使用代币。

非常感谢, 亚历克斯

【问题讨论】:

  • 你需要显示一些代码来澄清事情。您是否启动了 activityManager、PlaceHistoryHandler 和 PlaceController?
  • 我已经按照 GWT 主页上的 MVP 教程,code.google.com/webtoolkit/doc/latest/… 然后我只是做了 Javier 列出的修改。
  • 对不起,我好像把自己搞不清楚了。这如何与 GWT 活动和地点、MVP 框架相适应?我正在使用的当前结构很好,但是当涉及到通常不应该有任何附加标记的页面时,我似乎无法删除它。我想知道其他开发人员在使用 GWT 活动和地点 MVP 时,在与上述相同的情况下会做什么(联系我们页面)。非常感谢。

标签: url gwt mvp token


【解决方案1】:

好吧,您可以返回空令牌,它将 url 更改为 /#ContactUsPlace: 您也可以使用 @Prefix 注释更改前缀以获取 ex。 /#联系我们:

如果你想要更多的控制,那么你可以实现你自己的 PlaceHistoryMapper,这里是一个简单的例子:

public class KatPlaceHistoryMapper implements PlaceHistoryMapper{
    private static final String CONTACT = "contact";
    private static final String ABOUT_US = "aboutUs";

    @Override
    public Place getPlace(String hash) {
        if(token == null)
            return new DefaultPlace();
        else if(token.equals(CONTACT))
            return new ContactPlace();
        else if(token.equals(ABOUT_US))
            return new AboutUsPlace();
        else
            return null;
    }

    @Override
    public String getToken(Place place) {
        if(place instanceof DefaultPlace)
            return ""
        else if(place instanceof ContactPlace)
            return CONTACT;
        else if(place instanceof AboutUsPlace)
            return ABOUT_US;
        else
            return null;
    }
}

上述方法返回/获取的令牌实际上是整个哈希字符串(不仅仅是 ':' 之后的部分)。事实上,当使用这种方法时,你完全摆脱了令牌。 编写可以在编译时生成此类的自己的生成器似乎是一个不错的选择。也不要使用 PlaceHistoryMapperWithFactory,它为您提供与 PlaceTokenizers 相同的功能。

一些文档:http://code.google.com/webtoolkit/doc/latest/DevGuideMvpActivitiesAndPlaces.html#PlaceHistoryMapper

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多