Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

 

 

Wiki Markup
{scrollbar}

Link Components

Main Articles: Page Navigation, Component Parameters

Contents

Table of Contents
excludeContents|Link Components
printablefalse

How do I add query parameters to a PageLink or ActionLink?

These components do not have parameters to allow you to specify query parameters for the link; they both allow you to specify a context (one or more values to encode into the request path).

However, you can accomplish the same thing with a little code and markup. For example, to create a link to another page and pass a query parameter, you can replace your PageLink component with a standard <a> tag:

Code Block
controlstrue
linenumberslanguagetruexml

<a href="${profilePageLink}">Display Profile (w/ full details)</a>

In the matching Java class, you can create the Link programmatically:

Code Block
controlstrue
linenumberslanguagetruejava

  @Inject
  private PageRenderLinkSource linkSource;

  public Link getProfilePageLink()
  {
    Link link = linkSource.createPageRenderLinkWithContext(DisplayProfile.class, user);

    link.addParameterValue("detail", true);

    return link;
  }

... and in the DisplayProfile page:

Code Block
controlstrue
language
linenumberstrue
java
titleDisplayProfile.java (partial)

public class DisplayProfile
{
  void onActivate(@RequestParameter("detail") boolean detail)
  {
    . . .
  }
}

...

A similar technique can be used to add query parmeters to component event URLs (the type generated by the ActionLink or EventLink components), by injecting the ComponentResources, and invoking method createEventLink().

Since
since5.3
You may also bind a link component's parameters parameter; this is a Map of additional query parameters to add to the URL. The Map keys should be strings, and the Map values will be encoded to strings. Tapestry 5.3 also adds a literal map syntax to the property expression language.

How do I create a Link back to the current page from a component?

Sometimes it is useful to create a link back to the current page, but you don't always know the name of the page (the link may appear inside a deeply nested subcomponent). Fortunately, this is easy.

Code Block
languagexml

<t:pagelink page="prop:componentResources.pageName">refresh page</t:pagelink>

...

As an added benefit, if the page class is ever renamed or moved to a different package, the pageName property will automatically adjust to the new name.

Wiki Markup
{scrollbar}