Hi,
See below:
BrianJones wrote:
Hi all,
I'm having trouble using Velocity to analyze the boolean value of a property
of a class.
For example, I have class X, with a property Y (I'll call this property
'example_bool' in the lower example code) which is of type 'Boolean'.
I've
configured this property to use radio buttons so the user is only able to
choose one value. I've created several objects of this class, making sure
to utilize both the 'Yes' and 'No' values for some of these objects (to
ensure for testing purposes I have some of both).
This class also has another property, a static list, of location strings,
such as 'Location X', 'Location Y', etc.
Now, on a page, I am trying to calculate how many of each location have the
boolean value of Yes and no with the following velocity/HQL statement:
#set ($results = $xwiki.search("select obj.name from BaseObject obj,
StringProperty prop where obj.className='Example.ExampleClass' and
obj.name<>'Example.ExampleClassTemplate' and prop.id.id=obj.id and
prop.name='location' and prop.value='Location X' order by obj.name
asc"))
#set ($numTrue = 0)
#set ($numFalse = 0)
#foreach ($item in $results)
#set ($object = $xwiki.getDocument(${item}))
#if (!$object.get("example_bool"))
#set ($numFalse = $numFalse + 1)
#else
#set ($numTrue = $numTrue + 1)
#end
#end
Try to replace
#if (!$object.get("example_bool"))
by
#if (!$object.getProperty("example_bool").value)
Hope this helps (haven't tested, I admit)
Jerome.
This code is being executed without error, however, the 'True' count is
always being evaluated as the total number of objects, while the 'False'
count always stays at 0, even though I KNOW there are objects in this group
that have the value of 'No' for the 'example_bool' property.
Does anyone know what I'm doing wrong, or have any ideas that might help me
out? Thanks in advance gang.
On a side note, I've also noted that when using the Boolean property, the
user has the choice of 'Yes', 'No' and '---'. What is this later
value
('---') and why is it always included? To me, the meaning of Boolean means
'True OR False' and nothing else. Does this third value have a purpose?
And is there a way of excluding it from the choices the user sees?
Thanks again everyone!