So I just took a look at the code in SVN, and I think it's
definitely doable to make this work in UrlBuilder.
My suggestion would be that we add a method to OnwardResolution that
looks like:
String getUrl(Locale local);
And that we deprecate the existing getUrl(), and have it call through
with the system default locale. We should probably also change both
of these methods to protected (I'm not sure why I made them public).
The only places getUrl() is called right now are in subclasses,
inside the execute() method which has access to both the request and
response, and could therefore supply the Locale easily enough.
-t
On May 29, 2007, at 9:40 AM, Barry Davies wrote:
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 <stripes-
[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 <stripes-
[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
Park yourself in front of a world of choices in alternative vehicles.
Visit the Yahoo! Auto Green Center.
----------------------------------------------------------------------
---
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