Pregunta

Tengo una aplicación web GWT Lugares/Actividades.yo suelo Anchor's click evento para mover al usuario a un nuevo "lugar", por lo que no hay forma de que el usuario pueda abrir ningún "enlace" en una nueva ventana o pestaña.La pregunta es: ¿cómo puedo hacer que todos estos vínculos sean reales?

¿Fue útil?

Solución

Quizás, en lugar de usar Anchor y escuchar ClickEvent, use Hyperlink con el targetHistoryToken establecido en el nombre del lugar.

p. ej.

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

Otros consejos

Mientras usa un Hyperlink (o InlineHyperlink) funciona, prefiero usar un ClickHandler en una Anchor, porque si alguna actividad devuelve un valor no nulo en mayStop la URL no habría cambiado todavía (mientras que con una Hyperlink, lo habría hecho, incluso si el usuario opta por cancelar la navegación).

Para establecer el objetivo (href) sobre el Anchor, simplemente usa tu PlaceHistoryMapper.Y para manejar correctamente Ctrl+clic, clic central y clic derecho, reutilice el 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top