2013-09-26 193 views

Trả lời

13

Không có giải pháp phổ biến nhất có thể cho rằng, nhưng bạn có thể thử

<#list .data_model?keys as key> 
    ${key} 
</#list> 

này hoạt động nếu dữ liệu mô hình chỉ là một thường Map hay JavaBean, nhưng đối với dữ liệu mô hình phức tạp hơn nó tùy thuộc vào dữ liệu thực hiện -model nếu nó hỗ trợ ?keys và nếu nó thực sự trả về mọi thứ.

Bạn cũng có các biến mà bạn đặt trong các mẫu, có thể được liệt kê như trên, chỉ thay vì .data_model sử dụng .globals, .namespace (có nghĩa là mẫu namespace hiện hành) và .locals.

Bạn cũng có thể có Configuration biến chia sẻ chung và không có cách nào để liệt kê những biến đó hoàn toàn từ FTL (bạn có thể viết TemplateMethodModel tùy chỉnh cho số đó đọc Configuration.getSharedVariableNames() và gọi nó từ mẫu).

Tất nhiên, lý tưởng, FreeMarker cần có chỉ thị <#show_variables> hoặc một thứ gì đó, nỗ lực hết sức để hiển thị tất cả điều này ... nhưng thật đáng buồn là chưa có điều gì như vậy.

+0

Tôi nhận 'Dự kiến ​​băm mở rộng, nhưng điều này được đánh giá thành lỗi băm'. Có nghĩa là băm '.data_model' không hỗ trợ toán tử băm? –

+0

Có. Các băm không mở rộng không thể liệt kê các khóa hoặc giá trị của riêng chúng. – ddekany