2014-06-20 10 views
5

Pole mojego obiektu do tworzenia stron internetowych jest typu boolowskiego. W moim szablonie Freemarker muszę sprawdzić, czy to prawda, że ​​jest fałszywa.Testowanie zmiennej typu boolowskiego w Freemarker

Więc zrobiłem następujące, ale to nie działa

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

Wygląda Freemarker nie obsługuje NOT !. Próbowałem też <#if websetting.isOffline == false> false </#if>, ale to nie działa.

+0

Czy masz metodę getter dla właściwości 'isOffline'? Jak się nazywa? –

+0

metoda getter jest ** public boolean isOffline() {return this.isOffline; } **, dzięki! – TonyGW

Odpowiedz

6

Nie jest najlepszą nazwą właściwości boolowskiej, ponieważ domyślną metodą pobierającą jest również isOffline.

Jeśli nie możesz zmienić nazwy właściwości, pokaż, że chcesz wywołać metodę w szablonie z ().

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

Ale lepiej jest zmienić nazwę na coś w/o is przed nim (na przykład do offline). Następnie możesz użyć go w szablonie.

<#if !websetting.offline> false </#if> 
+0

To niepoprawne, przynajmniej bez użycia dziwnego niestandardowego 'ObjectWrapper'. 'boolean isOffline()' (lub 'boolean getOffline()') definiuje właściwość JavaBean o nazwie "offline", dzięki czemu można uzyskać dostęp do jej * wartości * w FreeMarker jak 'websetting.offline', bez' is' i '()' . OTOH, jeśli twoja metoda Java jest "boolean offline()", to nie będziesz zgodny ze specyfikacją JavaBeans i będzie to zwykła metoda, więc będziesz musiał napisać 'websetting.offline()' w FreeMarker, z '() '. – ddekany

+1

@ddany: nazwa właściwości OP to 'isOffline' z geterem' isOffline'. –

+0

O ile OP nie użył 'BeanInfo', nazwa właściwości dla' boolean isOffline() 'jest' offline', a nie 'isOffline'. – ddekany