2011-06-23 28 views
14

Im mới để grails (1.3.7) và Im cố gắng để có được một cái gì đó để làm việc:GSP: kiểm tra xem mô hình (biến) là rỗng không làm việc

Trong điều khiển của tôi, tôi trả lại một vài danh sách mà tôi muốn để truy cập vào gsp của tôi. Truy cập các tác phẩm, nhưng tôi chỉ muốn truy cập chúng nếu chúng không trống. Kiểm tra xem danh sách có trống hay không không hoạt động.

Đây là những gì tôi điều khiển cho trở lại:

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

allQuestions-đối tượng là "allQuestions def .." chứa câu hỏi-Objects (Database-Object)

trên GSP của tôi bây giờ tôi cố gắng như sau:

<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> 

vòng lặp đang hoạt động, kiểm tra tính trống rỗng không. Tôi đã thử với "không trống rỗng", "trống rỗng", ... không biết whats sai! bất kỳ trợ giúp là apreciated! :-)

Trả lời

14

Trong GSP, bạn có hỗ trợ đầy đủ về groovy trong biểu thức $ {}. Bạn có thể thực hiện các cuộc gọi phương thức thích hợp trên các đối tượng của mình nếu muốn. Hãy thử điều này:

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

Tôi đã thử lần đầu tiên, nó chỉ hoạt động cho các danh sách không trống - buồn cười. Nếu không, tôi nhận được thông báo lỗi này: Lỗi xử lý GroovyPageView: Lỗi thực thi thẻ : Không thể gọi phương thức isEmpty() trên đối tượng null :-) Giống với phương thức khác. Tôi không thể gọi cho họ nếu đối tượng là null - rất buồn cười .... – nano7

+0

Hình như bạn chỉ cần một kiểm tra null sau đó. Tôi sẽ cập nhật câu trả lời của mình. –

+0

cảm ơn! điều này hoạt động hoàn hảo! :-) – nano7

34

Các "grooviest" cách để làm điều này là

<g:if test="${questionList101}"> 

Trong Groovy, các đối tượng null và Bộ sưu tập trống bị cưỡng chế sai. Xem tài liệu về sự thật Groovy tại đây: http://groovy-lang.org/semantics.html#Groovy-Truth

Các vấn đề liên quan