On 10/12/01 11:00 PM, "Terry Steichen" <[EMAIL PROTECTED]> wrote:

> Geir,
> 
> From Section 15.1 User Guide:
> "Designers should note that set produces strings, which must be converted to
> integers to be used by the range operator. This example shows such a
> conversion:
> 
>   #set($a = "7")
>   #set($b = $int.valueOf($a) + 10)
>   $b
> 
> Yields the result 17. "

Cool.  Thanks. I will clarify that.

> 
> Just to clarify - Resource.getPrice() returns a float, not a Float.
> 
> I take it from your comment that, in the above quoted example, it is
> actually the duty of the programmer to 'put' the object referred to by $int
> into the VelocityContext?  If so, what object would that be? (I tried
> Integer, but that didn't work either.)

Well, in the above example, $a is a string, so an Integer would work there.
You have a float, which should

In your case, you could just .intValue() it, I suppose, as the the primitive
float will be wrapped in a Float.


> The log entry is:
> Fri Oct 12 18:08:35 EDT 2001  [error] RHS of #set statement is null. Context
> will not be modified. vrshow.html [line 19, column 8]
> 
> Line 19 is:
> #set($charge = $int.valueOf($entry.elementAt(0).Price)) ##does not work
> 
> Regards,
> 
> Terry
> 
> PS: I'm sure that once I 'get' what's going on here, it will be very easy.
> I assure you that when that happens I will document it very clearly for my
> customers (and for you, if you want it).

Sure, sounds good.
 
> ----- Original Message -----
> From: "Geir Magnusson Jr." <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Friday, October 12, 2001 10:23 PM
> Subject: Re: Continuing VTL Problems
> 
> 
>> On 10/12/01 10:00 PM, "Terry Steichen" <[EMAIL PROTECTED]> wrote:
>> 
>>> Geir,
>>> 
>>> On the Java side, I have an set of Resource objects each of which has a
>>> method getPrice() returning a float.   (I mistakenly said it was an
> Integer,
>>> below.)  I then populate a 'bundle' vector with one Resource object and
>>> another different object.  I then collect all these 'bundle' vectors
> into an
>>> 'rdata' vector.
>>> 
>>> On the template side, I use $rdata to extract the the 'rdata' vector and
>>> then use #foreach to remove each 'bundle' vector as $entry.  The first
>>> element of $entry is the Resource object ($entry.elementAt(0)); I then
> use
>>> $entry.elementAt(0).Price to retrieve the price.  So, the actual object
> is a
>>> Float(), not a String().
>>> 
>>> However, as I understand it, $entry.elementAt(0).Price returns a string.
> If
>>> that is correct, then $int.valueOf($entry.elementAt(0).Price) should
> (??)
>>> return an int (that can be used in computation).
>>> 
>> 
>> If I understand you, $entry.elementAt(0) returns a Resource object.
>> 
>> This Resource object has a method
>> 
>> public Float getPrice()
>> 
>> Therefore  $entry.elementAt(0).price will result in a Float, not a String.
>> 
>> Velocity does no type casting or transformation.  If .price returns a
> Float,
>> a Float it will be.
>> 
>> What's in the log?  :)
>> 
>>> But it doesn't work.  I'm sure I'm missing something, probably very
> obvious.
>>> But I don't know what it is.
>> 
>> I think it's this.
>> 
>>> Regards,
>>> 
>>> Terry
>>> 
>>> PS:  I'm assuming that $int is a built-in Integer object (available in
> the
>>> VelocityContext, per the documentation)?  If that's not so (meaning it's
> not
>>> built-in and I have to insert it), perhaps that's my problem?
>> 
>> That's one of them.  :)
>> 
>> There are *no* built-in objects in the context, and no reserved keys.
>> 
>> Where in the docs did you find that?
>> 
>> geir
>> 
>>> 
>>> ----- Original Message -----
>>> From: "Geir Magnusson Jr." <[EMAIL PROTECTED]>
>>> To: <[EMAIL PROTECTED]>
>>> Sent: Friday, October 12, 2001 9:14 PM
>>> Subject: Re: Continuing VTL Problems
>>> 
>>> 
>>>> On 10/12/01 8:18 PM, "Terry Steichen" <[EMAIL PROTECTED]> wrote:
>>>> 
>>>>> I'm still having some problems with converting variables to integers
> so
>>> I can
>>>>> perform operations on/with them.  (I've got some complex displays.)
> In
>>> this
>>>>> particular case, my Java code is doing a context.put() of a vector of
>>> vectors,
>>>>> each of which holds several objects, one of which is an Integer
> object.
>>> The
>>>>> reference (at the VTL level, inside the #foreach($entry in $entries)
>>>>> directive) is $entry.elementAt(0).Price.  It displays fine, but if I
> try
>>> to do
>>>>> any operations on it (adding, multiplying, etc.), the result is
> (apparen
>>> tly)
>>>>> null.  I've tried $int.valueOf($entry.elementAt(0).Price), but that
> has
>>> the
>>>>> same outcome.  I've gone over both the user and dev docs again and
> find
>>> only a
>>>>> mention that you must use integers.
>>>>> 
>>>>> In other words, in the template:
>>>>> 
>>>>> #set($charge = 1 * $int.valueOf($entry.elementAt(0).Price)) does *not*
>>> work.
>>>>> #set($charge = $int.valueOf($entry.elementAt(0).Price)) does *not*
> work
>>>>> #set($charge = $entry.elementAt(0).Price) works, in the sense that
> it's
>>> value
>>>>> is not null.
>>>>> 
>>>> 
>>>> I am going to assume that $entry.elementAt(0).Price is supposed to be a
>>>> java.lang.String and $int is a java.lang.Integer.
>>>> 
>>>> I suspect that Price isn't, as the line
>>>> 
>>>>  #set($charge = $int.valueOf($entry.elementAt(0).Price))
>>>> 
>>>> Appears at first glance to be perfectly valid.
>>>> 
>>>> What does the velocity.log say - there should be something in there...
>>>> 
>>>>> Please give me some idea of how to handle this stuff without
> introducing
>>> too
>>>>> much logic into the template and I'll be happy to write it up for
>>> others.
>>>> 
>>>> I don't think that's the issue...
>>>> 
>>>>> Regards,
>>>>> 
>>>>> Terry
>>>>> 
>>>>> PS: Someone suggested my earlier question would better fit into the
>>> users'
>>>>> (rather than developers') group.  I'm staying with the developer's
> list
>>>>> because these questions seem to be deeper than template editing (but
>>>>> admittedly more specific and pragmatic than deep 'inner guts' stuff).
>>>>> 
>>>> 
>>>> So far, this is perfectly acceptable stuff for -user.
>>>> 
>>>> Geir
>>>> 
>>>> --
>>>> Geir Magnusson Jr.     [EMAIL PROTECTED]
>>>> System and Software Consulting
>>>> "Whoever would overthrow the liberty of a nation must begin by subduing
>>> the
>>>> freeness of speech." - Benjamin Franklin
>>>> 
>>>> 
>>>> 
>>> 
>> 
>> --
>> Geir Magnusson Jr.     [EMAIL PROTECTED]
>> System and Software Consulting
>> "They that can give up essential liberty to obtain a little temporary
> safety
>> deserve neither liberty nor safety." - Benjamin Franklin
>> 
>> 
>> 
> 

-- 
Geir Magnusson Jr.     [EMAIL PROTECTED]
System and Software Consulting
"They that can give up essential liberty to obtain a little temporary safety
deserve neither liberty nor safety." - Benjamin Franklin


Reply via email to