Тестване на променлива от булев тип във Freemarker

Полето isOffline в моя обект за уеб настройка е булев тип. В моя шаблон на Freemarker трябва да проверя дали е true или false.

Така че направих следното, но не работи

<#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, наречено офлайн, така че можете да получите достъп до неговата стойност във 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; е дефиниран с getter public boolean isOffline() {...}. - person Aleksandr M; 26.06.2014
comment
Нива и собственост са различни неща. - person ddekany; 27.06.2014