Есть ли способ получить имя класса объекта в шаблоне freemarker?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>
Благодаря
Там нет встроенной функции в для этого, но в зависимости от настроек конфигурации и типа объекта, это может роботи:
<#if component.class.name == 'com.example.Something'>
Это работает, потому что component.foo
просто означает comonent.getFoo()
в Java, поэтому выше всего лишь означает component.getClass().getName()
. Это, однако, не работает, если свойства JavaBean component
не отображаются, что (при условии обычной конфигурации FreeMarker) имеет место для String
-s, Number
-s, Map
-s, -s и еще несколько "стандартных "классы. Если component
может быть таким объектом, но сравнение в любом случае должно быть ложным, вы можете написать (component.class.name)!'unknown' == 'com.example.Something'
.
Спасибо, много работает, как и ожидалось. – Giovanni
I uset <#if component.class.name?contains("TextComponentModel ")> полезен, поэтому я не могу указать полное имя класса. – Giovanni
'? EndsWith (". TextComponentModel ")' (или 'ends_with') будет более безопасным, чем'? Contains ("TextComponentModel") '. – ddekany