在 GWT 2.1+ 应用程序中,如何生成指向外部消费地点的链接?
例如,假设我想创建一个到 Place1 的链接。对于内部消费,我可以做到presenter.goTo(new Place1("token"))
。我怎样才能把它变成Anchor
用户可以粘贴到浏览器中的链接或某种链接?
这是我的做法:
final Place1 place = new Place1("token");
Anchor anchor = new Anchor("go to place 1", "#" + placeHistoryMapper.getToken(place));
anchor.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
placeController.goTo(place);
event.preventDefault();
}
});
据我所知,我自己是 GWT 的新手,如果您使用 Hyperlink 而不是 Anchor,则不必编写事件处理程序。它会将您重定向到该位置并自动处理历史记录。
您可以使用 PlaceHistoryMapper 将地点转换为令牌字符串。有关如何在 GWT 中实现 MVP 设计的详细信息,请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideMvpActivitiesAndPlaces 。
final YourImplementationOfPlaceHistoryMapper placeHistoryMapper = GWT.create(YourImplementationOfPlaceHistoryMapper.class);
final Hyperlink link = new Hyperlink("A Link To A Place", placeHistoryMapper.getToken(new YourNewPlace()));
MyView.ui.xml:
<g:InlineHyperlink ui:field="link">Link</g:InlineHyperlink>
MyView.java:
@UiField InlineHyperlink link;
public MyView() {
// ...
link.setTargetHistoryToken(getPlaceHistoryMapper().
getToken(new Place1("token")));
// ...
}
如果您已经将令牌映射到一个地方,只需创建一个 href 属性等于令牌的锚点。
Anchor anchor = new Anchor("go to place1 ", "token");