2011-06-23 30 views
14

Im nowe do Grails (1.3.7) i Im próbuje dostać coś do pracy:GSP: sprawdzić, czy wzór (zmienna) jest pusta nie działa

W moim kontrolera, daję z powrotem kilka list, które chcę uzyskać dostęp w moim gsp. Dostęp do utworów, ale chcę tylko uzyskać do nich dostęp, jeśli nie są puste. Sprawdzenie, czy lista jest pusta, czy nie, nie działa.

Oto co mój kontroler daje powrotem:

return new ModelAndView("https://stackoverflow.com/questions/questions", [ questionsList101 : allQuestions101, questionsList102 : allQuestions102, ... ])

allQuestions-obiekty są "def allQuestions .." zawierający pytania-obiektów (Object Database-)

na moim GSP teraz staram następujące:

<g:if test="${!empty questionsList101}"> 101:<br/> 
<g:each in="${questionsList101}" var="elem" status="i"> 
    <g:checkBox name="${questionsList101[i].id}" value="${questionsList101[i].id}"/>${questionsList101[i].id}<br/> 
</g:each> 
<br/> 
</g:if> 

pętla działa, sprawdzenie pustki nie jest. Próbowałem z "nie pustymi", "pustymi", ... nie wiem co jest nie tak! jakakolwiek pomoc jest doceniana! :-)

Odpowiedz

14

W GSP masz pełne wsparcie w wyrażeniu $ {}. Możesz wykonać odpowiednie wywołania metod na swoich obiektach, jeśli chcesz. Spróbuj tego:

<g:if test="${questionsList101 != null && !questionsList101.isEmpty()}"> 
+0

Próbowałem pierwszy, pracował tylko dla list, które nie są puste - zabawne. W przeciwnym razie pojawia się ten komunikat o błędzie: Błąd przetwarzania GroovyPageView: Błąd podczas wykonywania tagu : Nie można wywołać metody isEmpty() na obiekcie zerowym :-) To samo dla innej metody. Nie mogę ich wywołać, jeśli obiekt jest pusty - bardzo zabawny ... – nano7

+0

Wygląda na to, że potrzebujesz wtedy zerowej kontroli. Zaktualizuję moją odpowiedź. –

+0

dzięki! to działa idealnie! :-) – nano7

Powiązane problemy