如何使用自定义令牌实现GWT PlaceHistoryMapper



我希望我的小型GWT应用具有以下所有"书签" Place S:

http://www.mywebapp.com                 -->     "home page"
http://www.mywebapp.com/login           -->     login screen
http://www.mywebapp.com/main            -->     main menu, after logged in
http://www.mywebapp.com/start           -->     start of a transactional process
http://www.mywebapp.com/complete        -->     end of transactional process (receipt)

所以我继续创建了5个Place子类,所有这些都采用以下表格:

public class LoginPlace extends Place {
    // Intentionally left void because I'm not sure
    // what to implement here...
}

并具有相应的令牌:

public class LoginPlaceTokenizer extends PlaceTokenizer<LoginPlace> {
    @Override
    public LoginPlace getPlace(String token) {
        // ???
    }
    @Override
    public String getToken(LoginPlace place) {
        // ???
    }
}

我正在尝试为我的应用程序实现PlaceHistoryMapper

@WithTokenizers({
    HomePlaceTokenizer.class,
    LoginPlaceTokenizer.class,
    MainMenuPlaceTokenizer.class
    // etc.
})
public class MyWebAppPlaceHistoryMapper implements PlaceHistoryMapper {
    @Override
    public Place getPlace(String token) {
        // ???
    }
    @Override
    public String getToken(Place place) {
        // ???
    }
}

PlaceTokenizer<T>子类中的伴随getPlace/getToken方法似乎正在做同一件事。是吗?如果是,我是否只使用两个内部的代码?如果它们不一样,它们有何不同,我应该如何实施它们?

请记住,我想要的URL令牌是该应用程序中的书签 - 我不想使用GWT的默认someDisplay:SomePlace令牌。预先感谢!

您要么使用带有@WithTokenizers注释的接口,然后让GWT从GWT.create(MyWebAppPlaceHistoryMapper.class)生成实现,或者您可以"手动"实现PlaceHistoryMapper接口,并且不需要PlaceTokenizers。p>使用GWT.create(),GWT将根据令牌的前缀(使用if…else CASCADE,基于@Prefix的CC_19 NENTICATION,基于CC_19 NENTANE,CC_19 NENTICTION, CC_17 cascade of CC_19 NENTICATION cC_19 CC_19S)或Place的类型(使用instanceofif…else级联,基于PlaceTokenizer s的通用类型)。

相关内容

  • 没有找到相关文章

最新更新