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
