在GWT 2.1+应用程序中,如何生成指向外部消费地点的链接?
例如,假设我要创建一个指向Place1的链接。对于内部消费,我可以做presenter.goTo(new Place1("token"))
。如何将其转换为用户可以粘贴到浏览器中的Anchor
或某种链接?
答案 0 :(得分:5)
我将如何做:
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();
}
});
答案 1 :(得分:2)
据我所知,我自己是GWT的新手,如果你使用Hyperlink而不是Anchor,你将不必编写事件处理程序。它会将您重定向到该位置并自动处理历史记录。
答案 2 :(得分:1)
您可以使用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()));
答案 3 :(得分:0)
如果您已将令牌映射到某个地方,只需创建一个href属性等于该令牌的锚点。
Anchor anchor = new Anchor("go to place1 ", "token");
答案 4 :(得分:0)
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")));
// ...
}