Luoghi / attività GWT: cosa dovrebbe essere usato per la navigazione?
-
27-10-2019 - |
Domanda
Ho un'applicazione web GWT Luoghi / Attività.Uso l'evento Anchor
di click
per spostare l'utente in una nuova "posizione", quindi non è possibile che l'utente apra un "link" in una nuova finestra o scheda.La domanda è: come posso rendere reali tutti questi collegamenti?
Soluzione
Forse invece di utilizzare Anchor
e ascoltare il ClickEvent
, utilizzare Hyperlink
con il targetHistoryToken
impostato sul nome del luogo.
ad es.
<g:Hyperlink text="Home" targetHistoryToken="home" />
Altri suggerimenti
Mentre funziona un Hyperlink
(o InlineHyperlink
), preferisco utilizzare un ClickHandler
su un Anchor
, perché se qualsiasi attività restituisce un valore non nullo in mayStop
l'URL non sarebbe ancora cambiato (mentre con un Hyperlink
,lo avrebbe fatto, anche se l'utente decide di annullare la navigazione).
Per impostare il target (href
) sul Anchor
, utilizza semplicemente il tuo PlaceHistoryMapper
.E per gestire correttamente ctrl + clic, clic centrale e clic destro, riutilizza 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();
}
}
});