Link Components
Main Articles: Page Navigation, Component Parameters
Contents
Table of Contents |
---|
exclude | Contents|Link Components |
---|
printable | false |
---|
|
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 |
---|
controls | true |
---|
linenumberslanguage | truexml |
---|
|
<a href="${profilePageLink}">Display Profile (w/ full details)</a>
|
In the matching Java class, you can create the Link programmatically:
Code Block |
---|
controls | true |
---|
linenumberslanguage | truejava |
---|
|
@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 |
---|
controls | true |
---|
language | java |
---|
linenumbers | true |
---|
title | DisplayProfile.java (partial) |
---|
|
public class DisplayProfile
{
void onActivate(@RequestParameter("detail") boolean detail)
{
. . .
}
}
|
...
Since |
---|
|
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|TAPESTRY:Property Expressions]. |
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 |
---|
|
<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.