GWT: Как подавить гиперссылку, чтобы она не изменила мой токен истории - PullRequest
4 голосов
/ 05 мая 2009

Я хочу, чтобы мои гиперссылки действовали как кнопки (реагируют только на событие Click), однако они автоматически меняют маркер истории, когда вы нажимаете на них, что портит мой механизм истории в моем приложении. Есть ли способ подавить поведение гиперссылки по умолчанию, чтобы она не меняла маркер истории? Я попытался установить для targetHistoryToken значение null, но это не сработало.

Спасибо

Ответы [ 5 ]

4 голосов
/ 10 января 2010

Используйте Anchor вместо.

Как сказано в java doc о Hyperlink:

Если вы хотите гиперссылку (тег) HTML, не взаимодействуя с система истории, используйте вместо этого Anchor.

1 голос
/ 03 апреля 2012

Просто удалите href = "" из якоря.

<g:Anchor ui:field="clickField">Click here</g:Anchor>
1 голос
/ 07 мая 2009

Как говорит Рустишельф,

final HTML contactLink = new HTML(""
          + contactName + "");
contactLink.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
  .....
 }
}

http://gwt.google.com/samples/Showcase/Showcase.html#CwStackPanel

1 голос
/ 06 мая 2009

Самый простой способ сделать это - создать собственный класс, который расширяет Composite и просто отображает <a> </a> как виджет HTML. У меня была такая же проблема, и вот как я ее обошел.

0 голосов
/ 20 сентября 2009

Я создал этот класс

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