2012-09-24 37 views
33

Nói mã java của tôi có List<String> listS =null và tôi chuyển mã này vào tệp mẫu của tôi.Cách kiểm tra danh sách rỗng trong freemarker

Bây giờ tôi muốn đảm bảo rằng if list has some data then only do something.

Tôi đã thử

<#if listS = null> 
AND 
<#if !listS> 
AND 
<#if listS?size=0> 

Nhưng không ai trong số những dường như làm việc. Tôi có một số logic i code java của tôi; thông qua đó, nếu một số điều kiện là đúng, thì tôi new này listS và điền vào nó.

Do đó, tôi cần biết liệu listS đã được điền hay không, chỉ trong tệp mẫu của tôi.

Làm cách nào để thực hiện việc này? Cảm ơn. EDIT: Ngoài ra, tôi có một danh sách các cấu trúc, mỗi danh sách chứa danh sách này, (dân cư hay không là một vấn đề khác), và tôi đang chuyển toàn bộ danh sách cấu trúc, do đó chuyển giá trị boolean vào tệp mẫu dọc theo với danh sách các cấu trúc của tôi là không thể, vì tôi sẽ phải đi qua trong mỗi danh sách, và đó là traversal tôi muốn làm trong bản thân tập tin mẫu.

EDIT 2: Đối với những ai biết Java là gì, FreeMarker 2.3.x coi chúng là giá trị bị thiếu. Đơn giản, ngôn ngữ mẫu không biết khái niệm rỗng. Ví dụ, nếu bạn có một bean có thuộc tính maidenName và giá trị của thuộc tính đó là null, thì điều đó giống như nếu không có bất kỳ thuộc tính nào như vậy, theo như mẫu có liên quan (giả sử bạn không cấu hình FreeMarker để sử dụng một số wrapper đối tượng cực đoan, đó là). Kết quả của một cuộc gọi phương thức trả về null cũng được coi là biến bị thiếu (một lần nữa, giả định rằng bạn sử dụng một số trình bao bọc đối tượng thông thường). Xem thêm trong phần Câu hỏi thường gặp.

Freemarker Manual

Nhưng tôi vẫn havent có câu trả lời về cách thức để làm cho nó hoạt động, nếu ở tất cả tôi có thể.

+0

Tôi khuyên bạn nên luôn khởi tạo danh sách và căn cứ logic của bạn cho dù kích thước của danh sách lớn hơn 0. Mặc dù nếu bạn muốn sử dụng cách này để làm điều đó thì tôi không có trợ giúp như tôi t sử dụng freemarker trước khi không may. –

Trả lời

54

Sử dụng has_content built-in:

<#if list5?has_content> 
+0

Xin lỗi vì đã hỏi nó ở đây, nhưng có anyway không, tôi có thể đạt được những điều sau đây? Nói tôi làm '<#if somwething><# gán newVar>' Bây giờ tôi cần phải biết nếu có một biến như newVar? – Kraken

+0

'has_content' sẽ hoạt động (không phát nổ) trên các biến không tồn tại, vì vậy bạn chỉ có thể làm' newVar? Has_content' sau trong mã và không có gì xấu sẽ xảy ra nếu 'newVar' chưa bao giờ được xác định/khởi tạo. – Bohemian

+0

tức là '<#if newVar? Has_content>' sẽ hoạt động đúng không? – Kraken

0
<#list myList![] as element> 
    <#-- do something per element --> 
</#list> 

Nếu danh sách là null hoặc rỗng kết quả wil được sản phẩm nào .

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