I think Velocity saw the double pound sign (##) and ate it... cause
the pattern to fail. Single quotes fixed the problem.
J --
On Apr 21, 2008, at 11:01 AM, csanders wrote:
So what was velocity doing ?
Some problem with pound signs in double quotes ??
Jason Chodakowski wrote:
Ahh - brilliant. Problem solved.
Thanks,
J --
On Apr 21, 2008, at 10:46 AM, Nathan Bubna wrote:
Yeah, doesn't look like NumberTool has the problem. Velocity must
be
doing something funky with those # signs. Try defining those strings
with single quotes so that they aren't interpolated. Really, as a
general rule, if you don't need strings to be interpolated (parsed
as
if they were mini-templates), then you should single quote them
instead of double quote.
$NT.format('#,##0.##','190.0')
And for the record, which version of Velocity is this with?
On Mon, Apr 21, 2008 at 8:37 AM, Jason Chodakowski <[EMAIL PROTECTED]
> wrote:
I should also add that I also tried this in my tests:
NumberTool nt = new NumberTool();
Double dbl = new Double("190.00");
System.out.println(nt.format("#,##0.##", dbl));
This does not produce the IOException so it seems to be an
artifact of
template rendering.
Hope that helps.
Thanks,
J --
On Apr 21, 2008, at 10:26 AM, Jason Chodakowski wrote:
Hello... just this morning I needed to do some "in-template"
number
formatting and pulled the VelocityTools NumberTool off the shelf.
Now that
I'm trying to use it, I'm having some issues.
First, I've got a number tool in the context -
context.put("NT", new
NumberTool())
Next, I try to format a number in the template - #set($SW =
$NT.format("#,##0.##", "190.00"))
The "190.00" is actually pulled from the context, but there are
other
tests ahead of this to make sure we've got a real value there.
When the
template is rendered, I get this error message:
java.io.IOException:
org.apache.velocity.exception.MethodInvocationException:
Invocation of
method 'format' in class
org.apache.velocity.tools.generic.NumberTool threw
exception java.lang.IllegalArgumentException: Malformed pattern
"#," @
template.vm[57,32]
at ...
Now what is odd about this, is that it IS a valid number format
- and
looking at the source of the NumberTool, it looks like it would
just stuff
those values into a DecimalFormat and be done with it. Is
velocity choking
because of the #-pound-signs?
I double checked my format with these lines:
DecimalFormat f = new DecimalFormat("#,##0.##");
System.out.println(f.format(190.00D));
And this produces the result I expect: "190"
Also, I do have the Locale in the context too - it's just the
default
Locale which it looks like would be picked up automatically when
not
specified so I've not tried this avenue.
Any thoughts on this?
Many thanks in advance.
J --
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]