2012-11-25 43 views

Trả lời

2

Không có cách tích hợp trong bản phát hành hiện tại. (Nhưng tất nhiên bạn có thể gọi phương pháp của riêng bạn để làm điều đó.)

Đối tượng có phương pháp bạn muốn gọi phải được đưa vào mô hình dữ liệu (ví dụ: ngữ cảnh mẫu). (Đối với tĩnh học: freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55)

Nhưng, để bảo trì dễ dàng hơn, tôi thích điều này: tạo lớp com.foo.Base64EncoderMethod implements TemplateMethodModelEx (mà các cuộc gọi Base64.encodeBase64 nội bộ), sau đó tạo ra một mẫu lib/utils.ftl (nếu bạn chưa có một cái gì đó như thế) và trong đó , hãy gọi <#assign base64Encode = 'com.foo.Base64EncoderMethod'?new()>. Sau đó, trong các mẫu, hãy gọi <#import '/lib/utils.ftl' as u>${u.base64Encode(photo.data)}

+1

Bạn làm như thế nào? Tôi sử dụng commons-codec để làm mã hóa base64 trong ứng dụng của tôi. Hàm này là: 'Base64.encodeBase64 (byte [])' – Michael

+1

Đối tượng có phương thức bạn muốn gọi phải được đưa vào mô hình dữ liệu (ngữ cảnh = mẫu). (Đối với các số liệu thống kê: http://freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55) Tuy nhiên, để bảo trì dễ dàng hơn, tôi thích điều này: tạo 'class com.foo.Base64EncoderMethod triển khai TemplateMethodModelEx' (gọi là' Base64.encodeBase64' nội bộ), sau đó tạo một mẫu 'lib/utils.ftl' (nếu bạn chưa có một cái gì đó như thế), trong đó' <#assign base64Encode = 'com.foo.Base64EncoderMethod'? new()> ', sau đó trong các mẫu '<#import '/lib/utils.ftl' như u>' và '$ {base64Encode (photo.data)}'. – ddekany

+0

Ý tôi là, '$ {u.base64Encode (photo.data)}' (đã bỏ lỡ 'u.'). – ddekany

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