Ben, I ran into the exact same problem when I tried to prepare a patch for the 
issue.  I posted to the boards with the exact same question, but didn't get 
alot of replies.  I was thinking about creating a ThreadLocal registry for the 
Locale (or maybe even the entire session), and exposing that as another 
convenience feature of Stripes.  But I'm not a strict test-driven development 
kinda guy, so I didn't know whether that was the sort of thing that would cause 
Tim to do the Invasion of the Body Snatchers point-and-gutteral-noise (1:50 
into the clip) when he saw my patch.  I'm still leaning toward thinking it'd be 
a good idea to expose a ThreadLocal Session Registry from Stripes as a 
convenience feature, and it would assist in the resolution of this issue.  I 
understand that this registry would become something that ever single test 
would have to mock into existence, because you never know when something is 
using it.  What do you think?

-BD aka RJ

----- Original Message ----
From: Ben Gunter <[EMAIL PROTECTED]>
To: Stripes Development List <[email protected]>
Sent: Monday, May 28, 2007 11:14:37 PM
Subject: Re: [Stripes-dev] stripes:param should use formatters when possible




  

There's a small problem. I made this change for s:url and s:link. I did
so by changing LinkTagSupport.buildUrl() to copy the parameter map,
format each value, and then call UrlBuilder.addParameters().



I know I could have changed UrlBuilder.addParameter[s] to do the
formatting. I opted not to because I figured it might be better to let
UrlBuilder remain more of a utility class that has no Stripes-specific
dependencies. I don't know if that's a valid reason. If y'all think it
might be better to have UrlBuilder do the formatting then I can change
it easily enough.



The reason it might be good to do it in UrlBuilder is because it could
be done once and fix s:link, s:url, and OnwardResolution all at once.
But I went to fix OnwardResolution and realized that it doesn't have
access to the Locale. The tags can get it from
pageContext.getRequest().getLocale(), but the OnwardResolution doesn't
have a reference to a request object and so can't get the Locale to
pass into Formatter.format(). Any suggestions on how to get around this?



-Ben



Tim Fennell wrote:
Yes, I agree.
  -t

  

  
  On May 28, 2007, at 3:08 PM, Barry Davies wrote:

  

  
    
    Agreed,
having <s:param> (or <s:link>) use formatters by default
sounds like the most dev-friendly option to me.  Of course, all of this
still leaves out the fact that OnwardResolution.addParameter also
doesn't use the formatters.  Formatters-in-param-tag was mentioned also
in STS-322,
that I logged awhile ago.  Does anyone else agrees that there should be
a symmetry between <s:param> and OnwardResolution.addParameter()?

    

    

  
  

  
  
    
    -BD
aka RJ

    

    -----
Original Message ----

From: Tim Fennell <[EMAIL PROTECTED]>

To: Stripes Development List <[email protected]>

Sent: Monday, May 28, 2007 8:37:00 AM

Subject: Re: [Stripes-dev] stripes:param should use formatters when
possible

    

I think I'm a bit late to the game on this one, since the commit email
have already flown.  I definitely like the s:format tag - I think it's
a great addition.
    

    

    But I'm also wondering if it wouldn't be best to use the
formatting engine, with default style/pattern information, as the
default way of rendering objects to Strings in the param tags?  I can't
really think of a reason that this would be worse than the current way
(just toString()ing things), but it would also make life easier in a
lot of cases.

    

    

    I think the major reason this was brought up was in the
Stripernate (or similar) pattern where you might have links like:

        <s:link href="/Edit.action">

            <s:param name="id" value="${person.id}"/>

        </s:slink>

    

    

    If I recall correctly, then folks ended up implementing a lot
of toString() methods to return IDs - and that's less than ideal for
several reasons.  The new solution (with format tag) would obviously
work here, but it starts to get a bit verbose and repetitive if you
don't really need to provide the additional formatting parameters:

        <s:link href="/Edit.action">

            <s:param name="id"><s:fomat
value="${person.id}"/></s:param>

        </s:slink>

    

    

    So what do you think about using the formatters with their
default configurations as the default way to turn Object->String in
the param tag (actually, probably s:link tag)?

    

    

    -t

    

    

    

    
    On May 27, 2007, at 1:45 PM, Jeppe Cramon wrote:

    

    
      
      Hi

        

      

      Option 1
sounds good and is as Kai says useful in other circumstances too :)

        

      

      /Jepe

        

      

      
      
      
       

      From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
      On Behalf Of Ben
Gunter

      Sent: 26. maj 2007
19:03

      To: Stripes
Development List

      Subject: Re:
[Stripes-dev] stripes:param should use formatters when possible

      

        

      

      I knew there had to be more to this story :)

      

As it turns out, if you use s:param in the form:

      

<s:param name="x">${someObject}</s:param>

      

Then the tag's body content is only available as a String. There's no
way to apply a formatter to it because it gets evaluated ahead of time
by the JSP engine. On the other hand...

      

<s:param name="x" value="${someObject}" />

      

Does pass the Object into setValue so a Formatter could be used there.
The problem with that is that the s:param tag is expected to pass the
original Object value to its parent tag, not necessarily just a String.
That means it's up to the parent tag to format it correctly. And the
problem with /that/ is that some formatters require a format pattern
and/or format type, and that bit of information might be different for
each parameter.

      

So we're left with a few choices...

      
        Add a
new tag <s:format value="" [var=""] [formatType=""]
[formatPattern=""] />. One could then use it like <s:param
name="x"><s:format value="${someObject}" /></s:param>
        Add
some new attributes to s:param, such as format="true",
formatType="whatever" and formatPattern="whatever". format="true" would
be assumed if either formatType or formatPattern were non-null. If
formatType and formatPattern are not applicable for a given parameter,
then format="true" would be required as the default would be false.
        Do
nothing. I don't like this idea :)
      
      I really like option (1). This would be a
good idea because it is useful in many different situations and allows
developers to take full advantage of Stripes' formatting capabilities
from within their JSPs. Imagine this, given a Person class with
firstName and lastName properties:

      
        <s:format
formatType="lastNameFirst" value="${person}" /> -- Gunter, Ben
        <s:format
formatType="normal" value="${person}" /> -- Ben Gunter
        <s:format
value="${person}" /> -- the primary key of the object, which is the
default format
      
      

I'll do this if nobody is opposed to the idea. It solves the s:param
problem nicely and provides lots of other useful capabilities.

      

-Ben

      

Jeppe Cramon wrote: 

      No, I agree :)
        
      /Jeppe
        
       
 
      
        -----Original Message-----
        From: [EMAIL PROTECTED] [mailto:stripes-
        [EMAIL PROTECTED] On Behalf Of Ben Gunter
        Sent: 26. maj 2007 02:38
        To: Stripes Development List
        Subject: [Stripes-dev] stripes:param should use formatters when possible
          
        Does anybody disagree with this?
          
        http://mc4j.org/jira/browse/STS-374
          
        
-------------------------------------------------------------------------
        This SF.net email is sponsored by DB2 Express
        Download DB2 Express C - the FREE version of DB2 express and take
        control of your XML. No limits. Just data. Click to get it now.
        http://sourceforge.net/powerbar/db2/
        _______________________________________________
        Stripes-development mailing list
        [email protected]
        https://lists.sourceforge.net/lists/listinfo/stripes-development
          
        __________ NOD32 2292 (20070525) Information
 __________
          
        This message was checked by NOD32 antivirus system.
        http://www.eset.com
            
      
        
        
        
      -------------------------------------------------------------------------
      This SF.net email is sponsored by DB2 Express
      Download DB2 Express C - the FREE version of DB2 express and take
      control of your XML. No limits. Just data. Click to get it now.
      http://sourceforge.net/powerbar/db2/
      _______________________________________________
      Stripes-development mailing list
      [email protected]
      https://lists.sourceforge.net/lists/listinfo/stripes-development
        
      

      

__________ NOD32 2292 (20070525) Information __________

      

This message was checked by NOD32 antivirus system.

      http://www.eset.com

      

      

      -------------------------------------------------------------------------

      This SF.net email is sponsored by DB2
Express

      Download DB2 Express C - the FREE
version of DB2 express and take

      control of your XML. No limits. Just
data. Click to get it now.

      
http://sourceforge.net/powerbar/db2/_______________________________________________

      Stripes-development mailing list

      [email protected]

      https://lists.sourceforge.net/lists/listinfo/stripes-development

    
    

    

    

    -------------------------------------------------------------------------

This SF.net email is sponsored by DB2 Express

Download DB2 Express C - the FREE version of DB2 express and take

control of your XML. No limits. Just data. Click to get it now.

    http://sourceforge.net/powerbar/db2/

    _______________________________________________

Stripes-development mailing list

    [email protected]

    https://lists.sourceforge.net/lists/listinfo/stripes-development

    

    

    

    

    

    

    It's here! Your new message!

Get 
new email alerts with the free Yahoo!
Toolbar.
    -------------------------------------------------------------------------

    This SF.net email is sponsored by DB2
Express

    Download DB2 Express C - the FREE version
of DB2 express and take

    control of your XML. No limits. Just
data. Click to get it now.

    
http://sourceforge.net/powerbar/db2/_______________________________________________

    Stripes-development mailing list

    [email protected]

    https://lists.sourceforge.net/lists/listinfo/stripes-development

  
  

  

  

  
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
  
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development
  

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development







       
____________________________________________________________________________________Get
 the free Yahoo! toolbar and rest assured with the added security of spyware 
protection.
http://new.toolbar.yahoo.com/toolbar/features/norton/index.php
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to