Home > FAQs > Cookbook > Describing a bean in velocity

The follow snippet might be useful during debugging to list the properties inside an
arbitary bean. Or for handing to a UI developer that use unaware of the getters/setters inside an object.

## prints out the property names for a bean
#macro (describeBean $name) 
#set($bu = $struts.bean("com.opensymphony.util.BeanUtils"))
	#foreach($propName in $bu.getPropertyNames($name))
		<li>$propName</li>
	#end
#end

i.e. assuming $obj is a PersonObject that has properties(firstName, lastName, and zip).

#describeBean($obj)

would print

<li>firstName</li>
<li>lastName</li>
<li>zip</li>

One might also expand upon this to build a dynamic interface with via reflection. e.g.

$struts.evalute("$obj.${propName}")