You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Barry Books <tr...@gmail.com> on 2013/05/08 15:02:34 UTC

How do you remove link Parameters generically?

I've got a menu item generated from a database with a pagelink like this

<t:pagelink page="prop:drop.page" context="dropContext" style="${drop.style}"
>${drop.label}</t:pagelink>


I've added a search function to one of the linked pages that adds
parameters to the URL with


<t:pagelink ...  parameters="search">Page</t:pagelink>


I'd like to make the menu item clear the search so I tried this:


<t:pagelink page="prop:drop.page" context="dropContext" style="${drop
.style}" parameters="{}">${drop.label}</t:pagelink>


but it does not work. It seems Tapestry is clever enough to always add my
search criteria to the parameter map. This would be easy enough to fix if
my menu was not driven from a database but I don't see an easy to make my
generic menu know how to fix this.


It would seem useful to be able to say <t:pagelink ...
parameters="null">Page</t:pagelink> but parameters cannot be set to null.


Any suggestions?

Re: How do you remove link Parameters generically?

Posted by George Christman <gc...@cardaddy.com>.
So I was able to get around this issue with the following code.

public String getPageLink(String context) {
        Link link =
linkSource.createPageRenderLinkWithContext(SomeClass.class, context);

        for(String param : link.getParameterNames()) {
            link.removeParameter(param);
        }
        return link.toURI();
}

On Tue, Nov 11, 2014 at 8:53 PM, George Christman <gc...@cardaddy.com>
wrote:

> So I've run into the same problem on a couple of occasions and I've yet to
> find a good work around either. Alejandro suggestion doesn't seem to work
> for me do to the fact my links are in the layout component and not the
> page. Anybody have any suggestions? I agree with Barry, although this may
> be helpful in some cases, it seems like a bug in others. If we could just
> add null to the parameter, then it would work perfectly for both sides.
>
> On Mon, May 13, 2013 at 8:49 AM, Barry Books <tr...@gmail.com> wrote:
>
>> Thanks,
>>
>> That does exactly what I needed. It appears to be called before the new
>> parameters are added so it lets you remove the defaults.
>>
>>
>> On Mon, May 13, 2013 at 7:27 AM, Alejandro Scandroli <
>> alejandroscandroli@gmail.com> wrote:
>>
>> > Hi Barry
>> >
>> > I've been using a different workaround for this and maybe it could help
>> > you.
>> > You can listen for the DECORATE_PAGE_RENDER_LINK and then "decorate" the
>> > link as you want.
>> > Add something like this to your page.
>> >
>> > @OnEvent(EventConstants.DECORATE_PAGE_RENDER_LINK)
>> > void decoratePageRenderLink(Link link, PageRenderRequestParameters
>> > parameters)
>> > {
>> > if (parameters.getLogicalPageName().equals("YOUR_LOGICAL_PAGE_NAME")) {
>> > for (String name : link.getParameterNames())
>> >  {
>> > link.removeParameter(name);
>> > }
>> > }
>> > }
>> >
>> > Cheers.
>> > Alejandro.
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > On Thu, May 9, 2013 at 2:44 PM, Barry Books <tr...@gmail.com> wrote:
>> >
>> > > I am using @ActivationRequestParameter and perhaps this is feature
>> under
>> > > some circumstances but currently it seems like a bug to me.
>> > >
>> > > In this case I have a menu item called 'All Prints' that goes to a
>> page
>> > > that might set ARP fields from a search. I'd like the menu link to
>> always
>> > > go to the page without any url parameters so that it will show All
>> > Prints.
>> > > If I just had a simple PageLink I could just set
>> > parameters="{'tag'='All'}"
>> > > but  the menu links come from a database so they can be dynamically
>> > added.
>> > > I did get it to work as I wanted by adding a context of 'All' the
>> > pagelink
>> > > and then set tag to null in begin render. The only think I don't like
>> > about
>> > > that is the URL ends up being:
>> > >
>> > > /studio/work/All?tag=Paris (best case would be /studio/work?tag=All
>> > which I
>> > > don't really care for either)
>> > >
>> > > I suspect I'll really fix this by hardcoding a URL in the database and
>> > just
>> > > using <a href="/studio/work/"> but that seems wrong.
>> > >
>> > > I guess it comes down to what PageLink should do. I view it as a way
>> to
>> > go
>> > > to some arbitrary page with a set of arguments I specify. I'm OK with
>> > > leaving context and parameters empty and Tapestry providing defaults
>> but
>> > it
>> > > seems like if I supply a value it should use that and only that. I
>> > suppose
>> > > there may be other cases where this functionality is useful but I
>> can't
>> > > think of any off hand. Perhaps if parameters="null" or parameters="{}"
>> > > would just remove all parameters that might be OK and would solve the
>> > > common case of:
>> > >
>> > > 1. A menu item linking to a page that shows a bunch of things
>> > > 2. The page has search parameters to narrow the list and uses ARP to
>> > store
>> > > them
>> > >
>> > > The menu link does not need to know (and should not know) what the
>> > possible
>> > > set of search criteria is, it just wants to turn them all off. The
>> search
>> > > page can handle them using EventLink to clear individual ones.
>> > >
>> > >
>> > >
>> > > On Wed, May 8, 2013 at 7:06 PM, Howard Lewis Ship <hl...@gmail.com>
>> > > wrote:
>> > >
>> > > > I suspect you are using @ActivationRequestParameter annotatations
>> and
>> > > that
>> > > > is the source of your "sticky" query parameters.
>> > > >
>> > > > It may be a bug that you explicitly supply an empt parameters map to
>> > the
>> > > > PageLink and it still adds the ARP in, but that is likely a feature.
>> > > >
>> > > > To accomplish what you want, you may need to set the ARP fields to
>> null
>> > > > inside beginRender().
>> > > >
>> > > >
>> > > >
>> > > > On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com>
>> wrote:
>> > > >
>> > > > > I've got a menu item generated from a database with a pagelink
>> like
>> > > this
>> > > > >
>> > > > > <t:pagelink page="prop:drop.page" context="dropContext"
>> > > > > style="${drop.style}"
>> > > > > >${drop.label}</t:pagelink>
>> > > > >
>> > > > >
>> > > > > I've added a search function to one of the linked pages that adds
>> > > > > parameters to the URL with
>> > > > >
>> > > > >
>> > > > > <t:pagelink ...  parameters="search">Page</t:pagelink>
>> > > > >
>> > > > >
>> > > > > I'd like to make the menu item clear the search so I tried this:
>> > > > >
>> > > > >
>> > > > > <t:pagelink page="prop:drop.page" context="dropContext"
>> style="${drop
>> > > > > .style}" parameters="{}">${drop.label}</t:pagelink>
>> > > > >
>> > > > >
>> > > > > but it does not work. It seems Tapestry is clever enough to always
>> > add
>> > > my
>> > > > > search criteria to the parameter map. This would be easy enough to
>> > fix
>> > > if
>> > > > > my menu was not driven from a database but I don't see an easy to
>> > make
>> > > my
>> > > > > generic menu know how to fix this.
>> > > > >
>> > > > >
>> > > > > It would seem useful to be able to say <t:pagelink ...
>> > > > > parameters="null">Page</t:pagelink> but parameters cannot be set
>> to
>> > > null.
>> > > > >
>> > > > >
>> > > > > Any suggestions?
>> > > > >
>> > > >
>> > > >
>> > > >
>> > > > --
>> > > > Howard M. Lewis Ship
>> > > >
>> > > > Creator of Apache Tapestry
>> > > >
>> > > > The source for Tapestry training, mentoring and support. Contact me
>> to
>> > > > learn how I can get you up and productive in Tapestry fast!
>> > > >
>> > > > (971) 678-5210
>> > > > http://howardlewisship.com
>> > > >
>> > >
>> >
>>
>
>
>
> --
> George Christman
> CEO
> www.CarDaddy.com
> P.O. Box 735
> Johnstown, New York
>
>


-- 
George Christman
CEO
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Re: How do you remove link Parameters generically?

Posted by George Christman <gc...@cardaddy.com>.
So I've run into the same problem on a couple of occasions and I've yet to
find a good work around either. Alejandro suggestion doesn't seem to work
for me do to the fact my links are in the layout component and not the
page. Anybody have any suggestions? I agree with Barry, although this may
be helpful in some cases, it seems like a bug in others. If we could just
add null to the parameter, then it would work perfectly for both sides.

On Mon, May 13, 2013 at 8:49 AM, Barry Books <tr...@gmail.com> wrote:

> Thanks,
>
> That does exactly what I needed. It appears to be called before the new
> parameters are added so it lets you remove the defaults.
>
>
> On Mon, May 13, 2013 at 7:27 AM, Alejandro Scandroli <
> alejandroscandroli@gmail.com> wrote:
>
> > Hi Barry
> >
> > I've been using a different workaround for this and maybe it could help
> > you.
> > You can listen for the DECORATE_PAGE_RENDER_LINK and then "decorate" the
> > link as you want.
> > Add something like this to your page.
> >
> > @OnEvent(EventConstants.DECORATE_PAGE_RENDER_LINK)
> > void decoratePageRenderLink(Link link, PageRenderRequestParameters
> > parameters)
> > {
> > if (parameters.getLogicalPageName().equals("YOUR_LOGICAL_PAGE_NAME")) {
> > for (String name : link.getParameterNames())
> >  {
> > link.removeParameter(name);
> > }
> > }
> > }
> >
> > Cheers.
> > Alejandro.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Thu, May 9, 2013 at 2:44 PM, Barry Books <tr...@gmail.com> wrote:
> >
> > > I am using @ActivationRequestParameter and perhaps this is feature
> under
> > > some circumstances but currently it seems like a bug to me.
> > >
> > > In this case I have a menu item called 'All Prints' that goes to a page
> > > that might set ARP fields from a search. I'd like the menu link to
> always
> > > go to the page without any url parameters so that it will show All
> > Prints.
> > > If I just had a simple PageLink I could just set
> > parameters="{'tag'='All'}"
> > > but  the menu links come from a database so they can be dynamically
> > added.
> > > I did get it to work as I wanted by adding a context of 'All' the
> > pagelink
> > > and then set tag to null in begin render. The only think I don't like
> > about
> > > that is the URL ends up being:
> > >
> > > /studio/work/All?tag=Paris (best case would be /studio/work?tag=All
> > which I
> > > don't really care for either)
> > >
> > > I suspect I'll really fix this by hardcoding a URL in the database and
> > just
> > > using <a href="/studio/work/"> but that seems wrong.
> > >
> > > I guess it comes down to what PageLink should do. I view it as a way to
> > go
> > > to some arbitrary page with a set of arguments I specify. I'm OK with
> > > leaving context and parameters empty and Tapestry providing defaults
> but
> > it
> > > seems like if I supply a value it should use that and only that. I
> > suppose
> > > there may be other cases where this functionality is useful but I can't
> > > think of any off hand. Perhaps if parameters="null" or parameters="{}"
> > > would just remove all parameters that might be OK and would solve the
> > > common case of:
> > >
> > > 1. A menu item linking to a page that shows a bunch of things
> > > 2. The page has search parameters to narrow the list and uses ARP to
> > store
> > > them
> > >
> > > The menu link does not need to know (and should not know) what the
> > possible
> > > set of search criteria is, it just wants to turn them all off. The
> search
> > > page can handle them using EventLink to clear individual ones.
> > >
> > >
> > >
> > > On Wed, May 8, 2013 at 7:06 PM, Howard Lewis Ship <hl...@gmail.com>
> > > wrote:
> > >
> > > > I suspect you are using @ActivationRequestParameter annotatations and
> > > that
> > > > is the source of your "sticky" query parameters.
> > > >
> > > > It may be a bug that you explicitly supply an empt parameters map to
> > the
> > > > PageLink and it still adds the ARP in, but that is likely a feature.
> > > >
> > > > To accomplish what you want, you may need to set the ARP fields to
> null
> > > > inside beginRender().
> > > >
> > > >
> > > >
> > > > On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com>
> wrote:
> > > >
> > > > > I've got a menu item generated from a database with a pagelink like
> > > this
> > > > >
> > > > > <t:pagelink page="prop:drop.page" context="dropContext"
> > > > > style="${drop.style}"
> > > > > >${drop.label}</t:pagelink>
> > > > >
> > > > >
> > > > > I've added a search function to one of the linked pages that adds
> > > > > parameters to the URL with
> > > > >
> > > > >
> > > > > <t:pagelink ...  parameters="search">Page</t:pagelink>
> > > > >
> > > > >
> > > > > I'd like to make the menu item clear the search so I tried this:
> > > > >
> > > > >
> > > > > <t:pagelink page="prop:drop.page" context="dropContext"
> style="${drop
> > > > > .style}" parameters="{}">${drop.label}</t:pagelink>
> > > > >
> > > > >
> > > > > but it does not work. It seems Tapestry is clever enough to always
> > add
> > > my
> > > > > search criteria to the parameter map. This would be easy enough to
> > fix
> > > if
> > > > > my menu was not driven from a database but I don't see an easy to
> > make
> > > my
> > > > > generic menu know how to fix this.
> > > > >
> > > > >
> > > > > It would seem useful to be able to say <t:pagelink ...
> > > > > parameters="null">Page</t:pagelink> but parameters cannot be set to
> > > null.
> > > > >
> > > > >
> > > > > Any suggestions?
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Howard M. Lewis Ship
> > > >
> > > > Creator of Apache Tapestry
> > > >
> > > > The source for Tapestry training, mentoring and support. Contact me
> to
> > > > learn how I can get you up and productive in Tapestry fast!
> > > >
> > > > (971) 678-5210
> > > > http://howardlewisship.com
> > > >
> > >
> >
>



-- 
George Christman
CEO
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Re: How do you remove link Parameters generically?

Posted by Barry Books <tr...@gmail.com>.
Thanks,

That does exactly what I needed. It appears to be called before the new
parameters are added so it lets you remove the defaults.


On Mon, May 13, 2013 at 7:27 AM, Alejandro Scandroli <
alejandroscandroli@gmail.com> wrote:

> Hi Barry
>
> I've been using a different workaround for this and maybe it could help
> you.
> You can listen for the DECORATE_PAGE_RENDER_LINK and then "decorate" the
> link as you want.
> Add something like this to your page.
>
> @OnEvent(EventConstants.DECORATE_PAGE_RENDER_LINK)
> void decoratePageRenderLink(Link link, PageRenderRequestParameters
> parameters)
> {
> if (parameters.getLogicalPageName().equals("YOUR_LOGICAL_PAGE_NAME")) {
> for (String name : link.getParameterNames())
>  {
> link.removeParameter(name);
> }
> }
> }
>
> Cheers.
> Alejandro.
>
>
>
>
>
>
>
>
>
> On Thu, May 9, 2013 at 2:44 PM, Barry Books <tr...@gmail.com> wrote:
>
> > I am using @ActivationRequestParameter and perhaps this is feature under
> > some circumstances but currently it seems like a bug to me.
> >
> > In this case I have a menu item called 'All Prints' that goes to a page
> > that might set ARP fields from a search. I'd like the menu link to always
> > go to the page without any url parameters so that it will show All
> Prints.
> > If I just had a simple PageLink I could just set
> parameters="{'tag'='All'}"
> > but  the menu links come from a database so they can be dynamically
> added.
> > I did get it to work as I wanted by adding a context of 'All' the
> pagelink
> > and then set tag to null in begin render. The only think I don't like
> about
> > that is the URL ends up being:
> >
> > /studio/work/All?tag=Paris (best case would be /studio/work?tag=All
> which I
> > don't really care for either)
> >
> > I suspect I'll really fix this by hardcoding a URL in the database and
> just
> > using <a href="/studio/work/"> but that seems wrong.
> >
> > I guess it comes down to what PageLink should do. I view it as a way to
> go
> > to some arbitrary page with a set of arguments I specify. I'm OK with
> > leaving context and parameters empty and Tapestry providing defaults but
> it
> > seems like if I supply a value it should use that and only that. I
> suppose
> > there may be other cases where this functionality is useful but I can't
> > think of any off hand. Perhaps if parameters="null" or parameters="{}"
> > would just remove all parameters that might be OK and would solve the
> > common case of:
> >
> > 1. A menu item linking to a page that shows a bunch of things
> > 2. The page has search parameters to narrow the list and uses ARP to
> store
> > them
> >
> > The menu link does not need to know (and should not know) what the
> possible
> > set of search criteria is, it just wants to turn them all off. The search
> > page can handle them using EventLink to clear individual ones.
> >
> >
> >
> > On Wed, May 8, 2013 at 7:06 PM, Howard Lewis Ship <hl...@gmail.com>
> > wrote:
> >
> > > I suspect you are using @ActivationRequestParameter annotatations and
> > that
> > > is the source of your "sticky" query parameters.
> > >
> > > It may be a bug that you explicitly supply an empt parameters map to
> the
> > > PageLink and it still adds the ARP in, but that is likely a feature.
> > >
> > > To accomplish what you want, you may need to set the ARP fields to null
> > > inside beginRender().
> > >
> > >
> > >
> > > On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com> wrote:
> > >
> > > > I've got a menu item generated from a database with a pagelink like
> > this
> > > >
> > > > <t:pagelink page="prop:drop.page" context="dropContext"
> > > > style="${drop.style}"
> > > > >${drop.label}</t:pagelink>
> > > >
> > > >
> > > > I've added a search function to one of the linked pages that adds
> > > > parameters to the URL with
> > > >
> > > >
> > > > <t:pagelink ...  parameters="search">Page</t:pagelink>
> > > >
> > > >
> > > > I'd like to make the menu item clear the search so I tried this:
> > > >
> > > >
> > > > <t:pagelink page="prop:drop.page" context="dropContext" style="${drop
> > > > .style}" parameters="{}">${drop.label}</t:pagelink>
> > > >
> > > >
> > > > but it does not work. It seems Tapestry is clever enough to always
> add
> > my
> > > > search criteria to the parameter map. This would be easy enough to
> fix
> > if
> > > > my menu was not driven from a database but I don't see an easy to
> make
> > my
> > > > generic menu know how to fix this.
> > > >
> > > >
> > > > It would seem useful to be able to say <t:pagelink ...
> > > > parameters="null">Page</t:pagelink> but parameters cannot be set to
> > null.
> > > >
> > > >
> > > > Any suggestions?
> > > >
> > >
> > >
> > >
> > > --
> > > Howard M. Lewis Ship
> > >
> > > Creator of Apache Tapestry
> > >
> > > The source for Tapestry training, mentoring and support. Contact me to
> > > learn how I can get you up and productive in Tapestry fast!
> > >
> > > (971) 678-5210
> > > http://howardlewisship.com
> > >
> >
>

Re: How do you remove link Parameters generically?

Posted by Alejandro Scandroli <al...@gmail.com>.
Hi Barry

I've been using a different workaround for this and maybe it could help you.
You can listen for the DECORATE_PAGE_RENDER_LINK and then "decorate" the
link as you want.
Add something like this to your page.

@OnEvent(EventConstants.DECORATE_PAGE_RENDER_LINK)
void decoratePageRenderLink(Link link, PageRenderRequestParameters
parameters)
{
if (parameters.getLogicalPageName().equals("YOUR_LOGICAL_PAGE_NAME")) {
for (String name : link.getParameterNames())
 {
link.removeParameter(name);
}
}
}

Cheers.
Alejandro.









On Thu, May 9, 2013 at 2:44 PM, Barry Books <tr...@gmail.com> wrote:

> I am using @ActivationRequestParameter and perhaps this is feature under
> some circumstances but currently it seems like a bug to me.
>
> In this case I have a menu item called 'All Prints' that goes to a page
> that might set ARP fields from a search. I'd like the menu link to always
> go to the page without any url parameters so that it will show All Prints.
> If I just had a simple PageLink I could just set parameters="{'tag'='All'}"
> but  the menu links come from a database so they can be dynamically added.
> I did get it to work as I wanted by adding a context of 'All' the pagelink
> and then set tag to null in begin render. The only think I don't like about
> that is the URL ends up being:
>
> /studio/work/All?tag=Paris (best case would be /studio/work?tag=All which I
> don't really care for either)
>
> I suspect I'll really fix this by hardcoding a URL in the database and just
> using <a href="/studio/work/"> but that seems wrong.
>
> I guess it comes down to what PageLink should do. I view it as a way to go
> to some arbitrary page with a set of arguments I specify. I'm OK with
> leaving context and parameters empty and Tapestry providing defaults but it
> seems like if I supply a value it should use that and only that. I suppose
> there may be other cases where this functionality is useful but I can't
> think of any off hand. Perhaps if parameters="null" or parameters="{}"
> would just remove all parameters that might be OK and would solve the
> common case of:
>
> 1. A menu item linking to a page that shows a bunch of things
> 2. The page has search parameters to narrow the list and uses ARP to store
> them
>
> The menu link does not need to know (and should not know) what the possible
> set of search criteria is, it just wants to turn them all off. The search
> page can handle them using EventLink to clear individual ones.
>
>
>
> On Wed, May 8, 2013 at 7:06 PM, Howard Lewis Ship <hl...@gmail.com>
> wrote:
>
> > I suspect you are using @ActivationRequestParameter annotatations and
> that
> > is the source of your "sticky" query parameters.
> >
> > It may be a bug that you explicitly supply an empt parameters map to the
> > PageLink and it still adds the ARP in, but that is likely a feature.
> >
> > To accomplish what you want, you may need to set the ARP fields to null
> > inside beginRender().
> >
> >
> >
> > On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com> wrote:
> >
> > > I've got a menu item generated from a database with a pagelink like
> this
> > >
> > > <t:pagelink page="prop:drop.page" context="dropContext"
> > > style="${drop.style}"
> > > >${drop.label}</t:pagelink>
> > >
> > >
> > > I've added a search function to one of the linked pages that adds
> > > parameters to the URL with
> > >
> > >
> > > <t:pagelink ...  parameters="search">Page</t:pagelink>
> > >
> > >
> > > I'd like to make the menu item clear the search so I tried this:
> > >
> > >
> > > <t:pagelink page="prop:drop.page" context="dropContext" style="${drop
> > > .style}" parameters="{}">${drop.label}</t:pagelink>
> > >
> > >
> > > but it does not work. It seems Tapestry is clever enough to always add
> my
> > > search criteria to the parameter map. This would be easy enough to fix
> if
> > > my menu was not driven from a database but I don't see an easy to make
> my
> > > generic menu know how to fix this.
> > >
> > >
> > > It would seem useful to be able to say <t:pagelink ...
> > > parameters="null">Page</t:pagelink> but parameters cannot be set to
> null.
> > >
> > >
> > > Any suggestions?
> > >
> >
> >
> >
> > --
> > Howard M. Lewis Ship
> >
> > Creator of Apache Tapestry
> >
> > The source for Tapestry training, mentoring and support. Contact me to
> > learn how I can get you up and productive in Tapestry fast!
> >
> > (971) 678-5210
> > http://howardlewisship.com
> >
>

Re: How do you remove link Parameters generically?

Posted by Barry Books <tr...@gmail.com>.
I am using @ActivationRequestParameter and perhaps this is feature under
some circumstances but currently it seems like a bug to me.

In this case I have a menu item called 'All Prints' that goes to a page
that might set ARP fields from a search. I'd like the menu link to always
go to the page without any url parameters so that it will show All Prints.
If I just had a simple PageLink I could just set parameters="{'tag'='All'}"
but  the menu links come from a database so they can be dynamically added.
I did get it to work as I wanted by adding a context of 'All' the pagelink
and then set tag to null in begin render. The only think I don't like about
that is the URL ends up being:

/studio/work/All?tag=Paris (best case would be /studio/work?tag=All which I
don't really care for either)

I suspect I'll really fix this by hardcoding a URL in the database and just
using <a href="/studio/work/"> but that seems wrong.

I guess it comes down to what PageLink should do. I view it as a way to go
to some arbitrary page with a set of arguments I specify. I'm OK with
leaving context and parameters empty and Tapestry providing defaults but it
seems like if I supply a value it should use that and only that. I suppose
there may be other cases where this functionality is useful but I can't
think of any off hand. Perhaps if parameters="null" or parameters="{}"
would just remove all parameters that might be OK and would solve the
common case of:

1. A menu item linking to a page that shows a bunch of things
2. The page has search parameters to narrow the list and uses ARP to store
them

The menu link does not need to know (and should not know) what the possible
set of search criteria is, it just wants to turn them all off. The search
page can handle them using EventLink to clear individual ones.



On Wed, May 8, 2013 at 7:06 PM, Howard Lewis Ship <hl...@gmail.com> wrote:

> I suspect you are using @ActivationRequestParameter annotatations and that
> is the source of your "sticky" query parameters.
>
> It may be a bug that you explicitly supply an empt parameters map to the
> PageLink and it still adds the ARP in, but that is likely a feature.
>
> To accomplish what you want, you may need to set the ARP fields to null
> inside beginRender().
>
>
>
> On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com> wrote:
>
> > I've got a menu item generated from a database with a pagelink like this
> >
> > <t:pagelink page="prop:drop.page" context="dropContext"
> > style="${drop.style}"
> > >${drop.label}</t:pagelink>
> >
> >
> > I've added a search function to one of the linked pages that adds
> > parameters to the URL with
> >
> >
> > <t:pagelink ...  parameters="search">Page</t:pagelink>
> >
> >
> > I'd like to make the menu item clear the search so I tried this:
> >
> >
> > <t:pagelink page="prop:drop.page" context="dropContext" style="${drop
> > .style}" parameters="{}">${drop.label}</t:pagelink>
> >
> >
> > but it does not work. It seems Tapestry is clever enough to always add my
> > search criteria to the parameter map. This would be easy enough to fix if
> > my menu was not driven from a database but I don't see an easy to make my
> > generic menu know how to fix this.
> >
> >
> > It would seem useful to be able to say <t:pagelink ...
> > parameters="null">Page</t:pagelink> but parameters cannot be set to null.
> >
> >
> > Any suggestions?
> >
>
>
>
> --
> Howard M. Lewis Ship
>
> Creator of Apache Tapestry
>
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
>
> (971) 678-5210
> http://howardlewisship.com
>

Re: How do you remove link Parameters generically?

Posted by Howard Lewis Ship <hl...@gmail.com>.
I suspect you are using @ActivationRequestParameter annotatations and that
is the source of your "sticky" query parameters.

It may be a bug that you explicitly supply an empt parameters map to the
PageLink and it still adds the ARP in, but that is likely a feature.

To accomplish what you want, you may need to set the ARP fields to null
inside beginRender().



On Wed, May 8, 2013 at 6:02 AM, Barry Books <tr...@gmail.com> wrote:

> I've got a menu item generated from a database with a pagelink like this
>
> <t:pagelink page="prop:drop.page" context="dropContext"
> style="${drop.style}"
> >${drop.label}</t:pagelink>
>
>
> I've added a search function to one of the linked pages that adds
> parameters to the URL with
>
>
> <t:pagelink ...  parameters="search">Page</t:pagelink>
>
>
> I'd like to make the menu item clear the search so I tried this:
>
>
> <t:pagelink page="prop:drop.page" context="dropContext" style="${drop
> .style}" parameters="{}">${drop.label}</t:pagelink>
>
>
> but it does not work. It seems Tapestry is clever enough to always add my
> search criteria to the parameter map. This would be easy enough to fix if
> my menu was not driven from a database but I don't see an easy to make my
> generic menu know how to fix this.
>
>
> It would seem useful to be able to say <t:pagelink ...
> parameters="null">Page</t:pagelink> but parameters cannot be set to null.
>
>
> Any suggestions?
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry

The source for Tapestry training, mentoring and support. Contact me to
learn how I can get you up and productive in Tapestry fast!

(971) 678-5210
http://howardlewisship.com