Тестовая переменная логического типа в Freemarker

Поле isOffline в моем объекте веб-настройки имеет логический тип. В моем шаблоне Freemarker мне нужно проверить, верно это или нет.

Итак, я сделал следующее, но это не работает

<#if !websetting.isOffline> false </#if>

Похоже, Freemarker не поддерживает Not !. Я также пробовал <#if websetting.isOffline == false> false </#if>, но это не работает.


person TonyGW    schedule 20.06.2014    source источник
comment
У вас есть метод получения для свойства isOffline? Как его зовут?   -  person Aleksandr M    schedule 21.06.2014
comment
метод получения: **public boolean isOffline() { return this.isOffline; } **, Благодарность!   -  person TonyGW    schedule 21.06.2014


Ответы (1)


isOffline — не лучшее имя для логического свойства, потому что метод получения по умолчанию для него также isOffline.

Если вы не можете изменить имя свойства, покажите, что вы хотите вызвать метод в шаблоне с помощью ().

<#if !websetting.isOffline()> false </#if>

Но лучше изменить имя на что-то без is перед ним (например, на offline). Затем вы можете использовать его в шаблоне.

<#if !websetting.offline> false </#if>
person Aleksandr M    schedule 20.06.2014
comment
Это неправильно, по крайней мере, без использования какого-то странного кастомного ObjectWrapper. boolean isOffline() (или boolean getOffline()) определяет свойство JavaBean, называемое offline, поэтому вы можете получить доступ к его значению в FreeMarker, как websetting.offline, без is и (). OTOH, если ваш метод Java boolean offline(), тогда вы не будете соответствовать спецификации JavaBeans, и это будет простой метод, поэтому вам придется написать websetting.offline() в FreeMarker с расширением (). - person ddekany; 21.06.2014
comment
@ddekany: имя свойства OP было isOffline с геттером isOffline. - person Aleksandr M; 25.06.2014
comment
Если OP не использовал BeanInfo, имя свойства для boolean isOffline() будет offline, а не isOffline. - person ddekany; 26.06.2014
comment
@ddekany: О чем ты говоришь? OP имеет класс websetting, где private boolean isOffline; определяется с помощью геттера public boolean isOffline() {...}. - person Aleksandr M; 26.06.2014
comment
Поле и свойство - разные вещи. - person ddekany; 27.06.2014