Search code examples
freemarker

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


Solution

  • 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'.