ハイパーリンクをボタンのように動作させたい (Click イベントにのみ応答する) のですが、クリックすると履歴トークンが自動的に変更され、アプリケーションの履歴メカニズムが台無しになります。履歴トークンを変更しないように、ハイパーリンクの既定の動作を抑制する方法はありますか? targetHistoryToken を null に設定しようとしましたが、うまくいきませんでした。
ありがとう、
ハイパーリンクをボタンのように動作させたい (Click イベントにのみ応答する) のですが、クリックすると履歴トークンが自動的に変更され、アプリケーションの履歴メカニズムが台無しになります。履歴トークンを変更しないように、ハイパーリンクの既定の動作を抑制する方法はありますか? targetHistoryToken を null に設定しようとしましたが、うまくいきませんでした。
ありがとう、
Anchor
代わりに使用してください。
のJavaドキュメントがHyperlink
言うように:
履歴システムと対話せずに HTML ハイパーリンク ( タグ) が必要な場合は、代わりに Anchor を使用してください。
これを行う最も簡単な方法は、Composite を拡張<a> </a>
し、HTML ウィジェットとしてレンダリングする独自のクラスを作成することです。私はこれと同じ問題を抱えていましたが、それが私がそれを回避した方法です。
アンカーから href="" を削除するだけです。
<g:Anchor ui:field="clickField">Click here</g:Anchor>
このクラスを作成しました
import com.google.gwt.user.client.ui.HTML;
public class HyperlinkWithoutHistoryToken extends HTML {
public HyperlinkWithoutHistoryToken(String html, boolean wordWrap) {
super("<a href=\"javascript:undefined;\">" + html + "</a>", wordWrap);
}
public HyperlinkWithoutHistoryToken(String html) {
super("<a href=\"javascript:undefined;\">" + html + "</a>");
}
}