1

我真的不明白 PlaceTokenizer 在做什么?他是否将一个地方的类名转换为一个字符串,以便 gwt 历史机制可以使用它来将其放入浏览器的 url 中?这就是我的理解,但我不确定这是否正确。

4

1 回答 1

5

首先,PlaceTokenizer仅与生成器结合使用PlaceHistoryMapper(即,如果您GWT.create()是扩展的接口PlaceHistoryMapper;如果您愿意,您可以自由地在具体类中实现该接口)。生成器强制历史标记#URL 中的后面的部分)由前缀和位置标记组成。前缀用于匹配给定的PlaceTokenizer类型,或者由分@Prefix词器上的注释给出,或者默认为分词器处理的地点的简单名称。

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

序列化地点时(当您在应用程序中导航时PlaceController#goTo(Place)),会根据地点的类型(与标记器的通用参数匹配)检索标记器,并将地点提供给getToken,预计将返回地点标记为这个地方。然后PlaceHistoryHandler将添加前缀并更新 URL。

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

于 2013-01-07T10:49:04.637 回答