【问题标题】:FreeMarker check the class name of an objectFreeMarker 检查对象的类名
【发布时间】:2017-05-25 03:53:23
【问题描述】:

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

例如:

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

谢谢

【问题讨论】:

    标签: freemarker


    【解决方案1】:

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

    <#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")更安全。
    • 谢谢,当然可以。
    • @fustaki 是的。也许最好的办法是为此写一个TemplateMethodModelEx...
    • 您可以使用 来获取类的短名称。这也应该有助于继承。
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2018-09-10
    • 2016-01-20
    相关资源
    最近更新 更多