velocity-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From apa...@recks.org
Subject Re: Simple comparison not working
Date Thu, 04 Nov 2010 18:08:28 GMT
Hi,

if
> $mrank returns a number from 1 to 70
this still might be a string or any java Object who's toString() is returning something that
looks like 1 to 70.

> $mrank.class.name does not return anything.
It should. It is the same as:
  $mrank.getClass().getName()
Maybe because of a secure Ueberspector it is not returning anything [inhibiting getClass()].

You can try some further things:
a) print something like "$mrank" to ensure there is no whitespace around.
b) check your application (java) sources for what is within your $Array and $element, ensure
the methods are public and that $element.Rank is an int or Number
c) add a tool that does the numeric comparison (e.g. http://velocity.apache.org/tools/releases/2.0/javadoc/org/apache/velocity/tools/generic/MathTool.html
), note that since Velocity 1.5 it should support comparing different number types.
d) check and report to this list the velocity version youre using.

My 2c,
Christoph

Gary Catlin on 2010-11-04 18:49 wrote:
> Thanks for the reply, Christoph.
>
> $mrank returns a number from 1 to 70
> $mrank.class.name does not return anything.
>
> I had tried the #elseif cascade originally, but since the comparisons were
> not working, I simplified in an attempt to narrow down the problem.
> Unfortunately, it hasn't. Yes, everthing ends up in the #else branch using
> that method. Still no luck, though.
>
> gmc
>
> On Thu, Nov 4, 2010 at 11:06 AM,<apache@recks.org>  wrote:
>
>> Hi,
>>
>> please check what your $mrank object contains:
>>   print it out: $mrank
>>   check the class of it: $mrank.class.name
>>
>> Also you would profit from an #elsif cascade.
>>
>>     #if ($mrank<= 30) #set ($n = $MS1.add($record))
>>     #elsif ($mrank>= 60) #set ($n = $MS3.add($record))
>>     #else #set ($n = $MS2.add($record))
>>     #end
>> Here, if the comparisons where not possible, due to the class behind
>> $mrank, everything would end up in the #else branch.
>>
>> OTOH... some purists would cry-out that templates are not the place to code
>> business-logic...
>>
>> Hope this helps, kind regards,
>> Christoph
>>
>>
>> Gary Catlin on 2010-11-04 14:38 wrote:
>>
>>> Hello All,
>>>
>>> Does anyone know why the code below is not working as intended? I am
>>> attempting to group the records in $Array by the value of $Array.Rank. I
>>> have examined the contents and $Array.Rank returns values between 1 and
>>> 70,
>>> as expected. The conditions in my 3 #if statements don't seem to be
>>> getting
>>> activated, and $MS1/2/3 are empty.
>>>
>>> Thank you.
>>>
>>> #set ($MS1 = [])
>>> #set ($MS2 = [])
>>> #set ($MS3 = [])
>>> #set ($mrank = 0)
>>>
>>> #foreach ($element in $SortTool.sort($Array, ["rank", "name"]))
>>>      #set ($mrank = $element.Rank)
>>>      #set ($record = { 'Rank' : $element.Rank, 'Title' : $element.Name } )
>>>      #if ($mrank<= 30) #set ($n = $MS1.add($record)) #end
>>>      #if ($mrank>= 60) #set ($n = $MS3.add($record)) #end
>>>      #if ($mrank>   30&&   $mrank<   60) #set ($n = $MS2.add($record))
#end
>>> ##    #set ($n = $MS1.add($record))    ## debug, commented out
>>> #end
>>>
>>> Gary Catlin
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
>> For additional commands, e-mail: user-help@velocity.apache.org
>>
>>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@velocity.apache.org
For additional commands, e-mail: user-help@velocity.apache.org


Mime
View raw message