2012-11-25 13 views

risposta

2

Non esiste un modo integrato nella versione corrente. (Naturalmente è possibile chiamare il proprio metodo per farlo.)

L'oggetto di cui si desidera chiamare i metodi deve essere inserito nel modello di dati (ovvero il contesto del modello). (Per statica: freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55)

Ma, per una più facile manutenzione, preferisco questo: creare classe com.foo.Base64EncoderMethod implements TemplateMethodModelEx (che chiama Base64.encodeBase64 internamente), quindi creare un modello lib/utils.ftl (se non si dispone già qualcosa di simile) e in quella , chiama il numero <#assign base64Encode = 'com.foo.Base64EncoderMethod'?new()>. Quindi nei modelli, chiama <#import '/lib/utils.ftl' as u> e ${u.base64Encode(photo.data)}

+1

Come si fa? Io uso commons-codec per eseguire la codifica base64 nella mia applicazione. La funzione è: 'Base64.encodeBase64 (byte [])' – Michael

+1

L'oggetto i cui metodi si desidera chiamare devono essere inseriti nel modello dati (= contesto modello). (Per statics: http://freemarker.org/docs/pgui_misc_beanwrapper.html#autoid_55) Ma, per facilitare la manutenzione, preferisco questo: creare 'class com.foo.Base64EncoderMethod implements TemplateMethodModelEx' (che chiama' Base64.encodeBase64' internamente), quindi crea un template 'lib/utils.ftl' (se non hai già qualcosa di simile), in quel' <#assign base64Encode = 'com.foo.Base64EncoderMethod'? new()> ', poi in i modelli '<#import '/lib/utils.ftl' as u>' e '$ {base64Encode (photo.data)}'. – ddekany

+0

Intendevo, $ {u.base64Encode (photo.data)} '(mancava il' u'). – ddekany