[Java lista] Freemarker, ismeretlen valtozo tipus

Böszörményi Péter zmblevlist at gmail.com
2008. Júl. 25., P, 11:36:34 CEST


On 7/25/08, CoL <col at gear.hu> wrote:
> Szia,
>
> első és legfontosabb, mindig kezeld le, a null értékeket, tehát ${a}
> helyett is mindig ${(a)!""} legyen.
Igen, ezt hamar megtanulja az ember. :)
>
> Freemarker-be vannak is_... hívások. Én írnék egy macrót amibe az
> átadott változót viszgála kiiratnám a szerint a tartalmát, hogy milyen
> tipus.
> http://fmpp.sourceforge.net/freemarker/ref_builtins_expert.html
>
> Nagyon gondolat olvasást ne várj sose egy programtól sem, meg kell neki
> mondani mikor mit csináljon.
>
> C.

Koszi, vegig bongesztem azt a reszt is mar. Nem varok en el semmit a
programtol (fol azt nem, hogy helyettem gondolkozzon), de valahogy
termeszetesnek vettem, hogy egy sima kiiratasnal meghivja a
toStringet, ha mashogy nem tudja Stringre konvertalnia a objektumot
(elvegre a java is ezt csinalja). Ugy latszik Freemarkerben mas a
filozofia.
A megoldas, amit kozben megcsinaltam, egy sajat makrot, ami
megvizsgalja, hogy a parameter nem null-e, es meghivja a toStringjet.
Lehetett volna biztosan valami rekurziv makrot csinalni, ami bejarja
az egesz adatszerkezetet, de itt most erre nincs szukseg.

Kosz a segitseget!

>
> Böszörményi Péter wrote:
>> Udv a listanak!
>>
>> Freemarker sablont hasznalunk, hogy elkuldjuk az esetleges hibakat
>> emailben, ami a program (web) futasa soran keletkezik. A konnyebb
>> hibaazonositas vegett a sablonba beletoljuk a request, es a session
>> attributumokat is. A problema itt lep fel: nem ismert, hogy a level
>> kuldesenek pillanataban milyen adatok vannak a ket scopeban, es hat
>> neha elszall a sablon egy Expected number, date, or string. c
>> evaluated instead to freemarker.template.SimpleSequence on line 3,
>> column 6 in test.flt. hibauzenettel.
>>
>> A problemat demonstralo kod:
>> Configuration conf = new Configuration();
>> conf.setDirectoryForTemplateLoading(new File("."));
>>
>> Map<Object, Object> map =new HashMap<Object, Object>();
>> map.put("a", "b");
>> map.put("b", null);
>> map.put("c", Arrays.asList(1, 2, 3));
>>
>> Template temp = conf.getTemplate("test.flt");
>>
>> Writer out = new OutputStreamWriter(System.out);
>> temp.process(map, out);
>> out.flush();
>>
>> A sablon:
>> a: ${a}
>> b: ${b!"null"}
>> c: ${c}
>>
>> Megegyszer felhivnam a figyelmet: a sablon generalasanak idopontjaban
>> nem ismerjuk, hogy scopeokban milyen adatok vannak, es azok milyen
>> tipusuak. Mit lehet ebben az esetben tenni? Nem akarom bejarni a
>> teljes strukturat ilyenkor, eleg lenne, ha csak meg tudnam hivni a
>> toStringet().
>>
>> P.
>> _______________________________________________
>> Javalist mailing list
>> Javalist at javagrund.hu
>> http://javagrund.hu/mailman/listinfo/javalist
>>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról