FreeMarker 检查对象的 class 名称

FreeMarker check the class name of an object

有没有办法在 freemarker 模板中获取对象的 class 名称?

例如:

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

谢谢

没有为此内置的功能,但根据配置设置和对象类型,这可能有效:

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

这是可行的,因为 component.foo 只是表示 Java 中的 comonent.getFoo(),所以上面只是表示 component.getClass().getName()。但是,如果 component 的 JavaBean 属性未公开,这将不起作用,String-s 就是这种情况(假设通常的 FreeMarker 配置),Number-s、Map-s、List-s 以及更多 "standard" 类。如果 component 可以是这样的对象,但无论如何比较对他们来说应该是假的,你可以写 (component.class.name)!'unknown' == 'com.example.Something'.