Class RouterLink

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.router.RouterLink
All Implemented Interfaces:
AttachNotifier, BlurNotifier<RouterLink>, DetachNotifier, Focusable<RouterLink>, FocusNotifier<RouterLink>, HasComponents, HasComponentsOfType<Component>, HasElement, HasEnabled, HasStyle, HasText, AfterNavigationObserver, AfterNavigationHandler, Serializable

@Tag("a") public class RouterLink extends Component implements HasText, HasComponents, HasStyle, AfterNavigationObserver, Focusable<RouterLink>
A link that handles navigation internally using Router instead of loading a new page in the browser. setOpenInNewBrowserTab(boolean) opens the route in a new browser tab instead.

The href attribute of Component.getElement() will only be up-to-date when the component is attached to a UI.

Since:
1.0
Author:
Vaadin Ltd
See Also:
  • Constructor Details

    • RouterLink

      public RouterLink()
      Creates a new empty router link.
    • RouterLink

      public RouterLink(Class<? extends Component> navigationTarget)
      Creates a new router link for the given navigation target.
      Parameters:
      navigationTarget - navigation target
      Since:
      23.2
    • RouterLink

      public RouterLink(String text, Class<? extends Component> navigationTarget)
      Creates a new router link for the given navigation target using the given text.
      Parameters:
      text - link text
      navigationTarget - navigation target
    • RouterLink

      public RouterLink(Class<? extends C> navigationTarget, T parameter)
      Creates a new router link for the given navigation target using the given parameter.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      navigationTarget - navigation target
      parameter - url parameter for navigation target
      Since:
      23.2
    • RouterLink

      public RouterLink(String text, Class<? extends C> navigationTarget, T parameter)
      Creates a new router link for the given navigation target using the given text and parameter.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      text - link text
      navigationTarget - navigation target
      parameter - url parameter for navigation target
    • RouterLink

      public RouterLink(Class<? extends Component> navigationTarget, RouteParameters parameters)
      Creates a new router link for the given navigation target using the given parameters.
      Parameters:
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      23.2
    • RouterLink

      public RouterLink(String text, Class<? extends Component> navigationTarget, RouteParameters parameters)
      Creates a new router link for the given navigation target using the given text and parameters.
      Parameters:
      text - link text
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      4.0
    • RouterLink

      public RouterLink(Router router, Class<? extends Component> navigationTarget) throws IllegalArgumentException
      Creates a new router link for the given navigation target.
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      Throws:
      IllegalArgumentException - if navigation target requires parameters
      Since:
      23.2
    • RouterLink

      public RouterLink(Router router, String text, Class<? extends Component> navigationTarget) throws IllegalArgumentException
      Creates a new router link for the given navigation target using the given text.
      Parameters:
      router - router used for navigation
      text - link text
      navigationTarget - navigation target
      Throws:
      IllegalArgumentException - if navigation target requires parameters
    • RouterLink

      public RouterLink(Router router, Class<? extends C> navigationTarget, T parameter)
      Creates a new router link for the given navigation target using the given parameter.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      parameter - url parameter for navigation target
      Since:
      23.2
    • RouterLink

      public RouterLink(Router router, String text, Class<? extends C> navigationTarget, T parameter)
      Creates a new router link for the given navigation target using the given text and parameter.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      router - router used for navigation
      text - link text
      navigationTarget - navigation target
      parameter - url parameter for navigation target
    • RouterLink

      public RouterLink(Router router, Class<? extends Component> navigationTarget, RouteParameters parameters)
      Creates a new router link for the given navigation target using the given parameters.
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      23.2
    • RouterLink

      public RouterLink(Router router, String text, Class<? extends Component> navigationTarget, RouteParameters parameters)
      Creates a new router link for the given navigation target using the given text and parameters.
      Parameters:
      router - router used for navigation
      text - link text
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      4.0
  • Method Details

    • setRoute

      public void setRoute(Router router, Class<? extends Component> navigationTarget)
      Set the navigation target for this link.
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      Throws:
      IllegalArgumentException - if navigation target requires parameters
    • setRoute

      public <T, C extends Component & HasUrlParameter<T>> void setRoute(Router router, Class<? extends C> navigationTarget, T parameter)
      Set the navigation target for this link.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      parameter - url parameter for navigation target
    • setRoute

      public void setRoute(Router router, Class<? extends Component> navigationTarget, RouteParameters parameters)
      Set the navigation target for this link.
      Parameters:
      router - router used for navigation
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      4.0
    • setRoute

      public void setRoute(Class<? extends Component> navigationTarget)
      Set the navigation target for this link.
      Parameters:
      navigationTarget - navigation target
      Throws:
      IllegalArgumentException - if navigation target requires parameters
      Since:
      2.1
    • setRoute

      public <T, C extends Component & HasUrlParameter<T>> void setRoute(Class<? extends C> navigationTarget, T parameter)
      Set the navigation target for this link.
      Type Parameters:
      T - url parameter type
      C - navigation target type
      Parameters:
      navigationTarget - navigation target
      parameter - url parameter for navigation target
      Since:
      2.1
    • setRoute

      public void setRoute(Class<? extends Component> navigationTarget, RouteParameters parameters)
      Set the navigation target for this link.
      Parameters:
      navigationTarget - navigation target
      parameters - route parameters for navigation target
      Since:
      4.0
    • getHref

      public String getHref()
      Gets the href (the URL) of this link.
      Returns:
      the href
    • getQueryParameters

      public Optional<QueryParameters> getQueryParameters()
      Gets the QueryParameters of this link.
      Returns:
      an optional of QueryParameters, or an empty optional if there are no query parameters set
      See Also:
    • setQueryParameters

      public void setQueryParameters(QueryParameters queryParameters)
      Sets the QueryParameters of this link.

      The query string will be generated from QueryParameters.getQueryString() and will be appended to the href attribute of this link.

      Parameters:
      queryParameters - the query parameters object, or null to remove existing query parameters
    • setTarget

      public void setTarget(String target)
      Sets the browsing context the link opens in, as the target attribute of the <a> element. Any target other than _self leaves the click to the browser: the route opens in that context through a regular page load, with a UI of its own, and the current UI does not navigate.
      
       RouterLink link = new RouterLink("Report", ReportView.class);
       link.setTarget("_blank"); // same as setOpenInNewBrowserTab(true)
       
      Parameters:
      target - a window.name or one of _self, _blank, _parent, _top; null or "" removes the attribute, which opens the link in the current context
      See Also:
    • getTarget

      public String getTarget()
      Gets the browsing context the link opens in.
      Returns:
      the target attribute, or null if none is set
      See Also:
    • setOpenInNewBrowserTab

      public void setOpenInNewBrowserTab(boolean openInNewBrowserTab)
      Sets whether the link opens its route in a new browser tab, through the _blank target. Turning it off removes the target, whatever it was.
      Parameters:
      openInNewBrowserTab - true to open the route in a new tab, false to navigate in the current one
      See Also:
    • isOpenInNewBrowserTab

      public boolean isOpenInNewBrowserTab()
      Gets whether the link opens its route in a new browser tab.
      Returns:
      true if the target is _blank
      See Also:
    • getHighlightCondition

      public HighlightCondition<RouterLink> getHighlightCondition()
      Gets the HighlightCondition of this link.

      The default condition is to checked whether the current location starts with this link's getHref() value, as defined in HighlightConditions.locationPrefix().

      Returns:
      the highlight condition, never null
      See Also:
    • setHighlightCondition

      public void setHighlightCondition(HighlightCondition<RouterLink> highlightCondition)
      Sets the HighlightCondition of this link, which determines if the link should be highlighted when a AfterNavigationEvent occurs.

      The evaluation of this condition will be processed by this link's HighlightAction.

      Parameters:
      highlightCondition - the highlight condition, not null
      See Also:
    • getHighlightAction

      public HighlightAction<RouterLink> getHighlightAction()
      Gets the HighlightAction of this link.

      The default action is to toggle the highlight attribute of the element, as defined in HighlightActions.toggleAttribute(String).

      Returns:
      the highlight action, never null
      See Also:
    • setHighlightAction

      public void setHighlightAction(HighlightAction<RouterLink> highlightAction)
      Sets the HighlightAction of this link, which will be performed with the evaluation of this link's HighlightCondition.

      The old action will be executed passing false to HighlightAction.highlight(Object, boolean) to clear any previous highlight state.

      Parameters:
      highlightAction - the highlight action, not null
      See Also:
    • afterNavigation

      public void afterNavigation(AfterNavigationEvent event)
      Description copied from interface: AfterNavigationHandler
      Callback executed after navigation has been executed.
      Specified by:
      afterNavigation in interface AfterNavigationHandler
      Parameters:
      event - after navigation event with event details