【发布时间】:2017-05-25 03:53:23
【问题描述】:
有没有办法在 freemarker 模板中获取对象的类名?
例如:
<#if component.javaType.class.name.equals("test") >
"something...."
</#else>
"something else ...."
</#if>
谢谢
【问题讨论】:
标签: freemarker
有没有办法在 freemarker 模板中获取对象的类名?
例如:
<#if component.javaType.class.name.equals("test") >
"something...."
</#else>
"something else ...."
</#if>
谢谢
【问题讨论】:
标签: freemarker
没有内置的功能,但根据配置设置和对象的类型,这可能有效:
<#if component.class.name == 'com.example.Something'>
因为component.foo 在Java 中仅表示comonent.getFoo(),所以这行得通,所以上面仅表示component.getClass().getName()。但是,如果 component 的 JavaBean 属性未公开,则此方法不起作用,String-s、Number-s、Map-s 就是这种情况(假设通常的 FreeMarker 配置) List-s 和更多“标准”类。如果component 可以是这样的对象,但无论如何比较都应该是假的,你可以写(component.class.name)!'unknown' == 'com.example.Something'。
【讨论】:
?endsWith(".TextComponentModel")(或ends_with)会比?contains("TextComponentModel")更安全。
TemplateMethodModelEx...