Giovanni
Giovanni

Reputation: 95

FreeMarker check the class name of an object

is there a way to get the class name of an object in a freemarker template ?

For instance:

<#if component.javaType.class.name.equals("test")  > 
 "something...."
</#else>
 "something else ...."
</#if>

Thanks

Upvotes: 1

Views: 4119

Answers (1)

ddekany
ddekany

Reputation: 31122

There's no feature built in for that, but depending on the configuration settings and on the type of the object, this may works:

<#if component.class.name == 'com.example.Something'>

That works because component.foo simply means comonent.getFoo() in Java, so the above just means component.getClass().getName(). This, however doesn't work if the JavaBean properties of component aren't exposed, which (assuming the usual FreeMarker configuration) is the case for String-s, Number-s, Map-s, List-s and some more "standard" classes. If component can be a such object, but the comparison should be false for them anyway, you can write (component.class.name)!'unknown' == 'com.example.Something'.

Upvotes: 2

Related Questions