abdera-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Primmer" <david.prim...@gmail.com>
Subject Re: urlFor in RouteManager does not let you null out vars
Date Thu, 15 May 2008 21:10:46 GMT
I was thinking that if you passed in null, the urlFor would not
replace any of your tokens. But on the other hand, this behavior lets
you get a url by just sending in one arg: the route name.

I'm not sure off the top of my head how the Ruby and Python Routes
libs handle this. It is hard to know what users would expect but at a
minimum it should be in a code comment. As it is, if I have two tokens
in my route and I only one one of them to be replaced with the request
var, i can get this by sending in a map with only one of the params
set to null for the one i don't want and the other one will magically
get resolved. Seems a little to implicit to me.


On Thu, May 15, 2008 at 2:02 PM, David Calavera
<david.calavera@gmail.com> wrote:
> Hi David, what do you think could be the expected behavior?
> On Thu, May 15, 2008 at 5:09 PM, James M Snell <jasnell@gmail.com> wrote:
>> Ok, we need to fix that. Want to open a jira issue?
>> - James
>> David Primmer wrote:
>>> I need to correct myself here. After investigating the code more, I
>>> was able to get the result I wanted by sending in a map with id=null
>>> as params instead of sending in a null param arg. The code only pulls
>>> in values from the request if they're not explicitly included in the
>>> params map in urlFor. I still don't know if this is the desired
>>> behavior. It's certainly not what I expected.
>>> davep
>>> On Wed, May 14, 2008 at 11:21 AM, David Primmer <david.primmer@gmail.com>
>>> wrote:
>>>> I'm trying to implement getHref in an adapter, which returns the url
>>>> for the collection. I'm also using RouteManager and it's urlfor
>>>>     for (String var : route.getVariables()) {
>>>>       Object value = context.getTarget().getParameter(var);
>>>>       if (!map.containsKey(var) && value != null) {
>>>>         map.put(var, value);
>>>>       }
>>>>     }
>>>> say my route is /feed/:id
>>>> and my request is /feed/1
>>>> if i'm doing urlFor("myroute", null), hoping that it produces /feed/
>>>> as a url, but instead, the code above pulls the id out of the request
>>>> context and fills in those params, giving me a url of /feed/1. I don't
>>>> understand why it would do this and it limits the use of urlFor for
>>>> generating collection urls.
>>>> davep
> --
> David Calavera
> http://www.thinkincode.net

View raw message