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'
.
有没有办法在 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'
.