Pergunta

Tenho um aplicativo da web GWT Places / Activities.Eu uso o evento Anchor do click para mover o usuário em um novo "lugar", portanto, não há como o usuário abrir qualquer "link" em uma nova janela ou guia.A questão é: como tornar todos esses links reais?

Foi útil?

Solução

Talvez em vez de usar Anchor e ouvir ClickEvent, use Hyperlink com targetHistoryToken definido como o nome do local.

por exemplo,

<g:Hyperlink text="Home" targetHistoryToken="home" />

Outras dicas

Embora o uso de um Hyperlink (ou InlineHyperlink) funcione, prefiro usar um ClickHandler em um Anchor, porque se qualquer atividade retornar um valor não nulo em mayStop, o URL não teria mudado ainda (enquanto com um Hyperlink,teria, mesmo que o usuário decidisse cancelar a navegação).

Para definir o destino (href) no Anchor, basta usar seu PlaceHistoryMapper.E para lidar corretamente com ctrl + clique, clique com o botão do meio e clique com o botão direito, reutilize o HyperlinkImpl:

Anchor anchor = new Anchor("text", "#" + placeHistoryMapper.getToken(targetPlace));
anchor.addClickHandler(new ClickHandler() {
   private static final HyperlinkImpl IMPL = GWT.create(HyperlinkImpl.class);

   @Override
   public void onClick(ClickEvent event) {
      if (IMPL.handleAsClick(event)) {
         placeController.goTo(targetPlace);
         event.preventDefault();
      }
   }
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top