2011-03-08 39 views
5

在GWT 2.1+應用程序中,如何生成指向外部消費場所的鏈接?GWT錨點嗎?

例如,假設我想創建一個到Place1的鏈接。對於內部消費,我可以做presenter.goTo(new Place1("token"))。我怎樣才能把它變成Anchor或用戶可以粘貼到瀏覽器中的某種鏈接?

回答

0

如果您已經將該令牌映射到某個位置,只需使用與該令牌相同的href屬性創建一個錨點即可。

Anchor anchor = new Anchor("go to place1 ", "token"); 
+0

會不會將href必須'PlacePrefix:Token'?我怎樣才能以編程方式獲得'PlacePrefix'? – Justin 2011-03-08 15:09:41

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(); 
    } 
}); 
+0

謝謝托馬斯,但是這是否仍然沒有得到前綴的問題? – Justin 2011-03-14 00:02:37

+0

不,PlaceHistoryMapper是PlaceHistoryHandler用來生成和解析令牌的東西,它是(它必須!)完全瞭解PlaceTokenizer的前綴。 – 2011-03-21 22:57:50

2

據我知道,因爲我是新來的GWT我自己,如果你使用超鏈接,而不是錨,你將不必編寫事件處理程序。它會將您重定向到該地點並自動處理歷史記錄。

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())); 
+0

不錯的解決方案,因爲它啓用了右鍵點擊開新標籤。 – 2012-06-18 07:54:13

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"))); 
    // ... 
}