我真的不明白PlaceTokenizer在做什么?
他是否将场所的类名称转换为字符串,以便gwt历史记录机制可以使用它将其放入浏览器的url中?
多数民众赞成在我的理解,但我不确定这是否是正确的。

最佳答案

首先,PlaceTokenizer仅与PlaceHistoryMapper的生成器结合使用(即,如果GWT.create()扩展了PlaceHistoryMapper的接口;则可以根据需要随意在具体类中实现该接口)。生成器强制历史标记(URL中#之后的部分)由前缀和位置标记组成。该前缀用于与给定的PlaceTokenizer类型匹配,或者由令牌生成器上的@Prefix注释指定,​​或者默认为令牌生成器处理的场所的简单名称。

解析历史令牌时(在初始化时调用handleCurrentHistory()或使用浏览器的历史记录进行导航时),在将前缀与PlaceTokenizer匹配并且已检索到该令牌生成器的实例之后(从工厂(如果使用PlaceHistoryMapperWithFactory或使用其默认的零参数构造函数创建),则将位置标记传递给getPlace方法,并且令牌生成器应实例化与该位置标记对应的位置。

序列化地点时(当您在应用程序中浏览PlaceController#goTo(Place)时),将根据地点的类型(与令牌化程序的通用参数匹配)检索令牌生成器,并将该地点分配给getToken期望返回该地点的地点令牌。然后PlaceHistoryHandler将在前缀之前并更新URL。

地点令牌可以是任何东西,但是基于地点(其字段)所包含的数据,而不是其类型(反映为历史令牌的前缀)

07-24 15:37