I'm using MessageFormat to format some addresses with a template like this:
"{0}\n{1}\n{2}\n{3}, {4} {5}"
where
Most of these fields are optional when captured. How do I avoid having an empty line when for instance, there is not street 3? I could use a template like this "{0}{1}{2}{3}{4}{5}" and then substitute either "street 3\n" or "" accordingly, but then the template doesn't provide much benefit toward formatting.
Is there a way to include conditionals in the format string? Or is there another, preferably lightweight, templating tool available that supports conditional formatting?
EDIT: rewrite...
If you don't care about design, then you can readily pick a template engine at random, or because you like its name, or whatever. If you don't have criteria for selecting an engine, then who cares which one you pick?
On the other hand, if you do care about design, such as in using the Model-View-Controller (MVC) design pattern, then your choices quickly diminish.
Most of the answers here emphasize the power of the various template engines. But the whole point of MVC is that you don't want to do more, because doing more in your templates will eventually hurt you very bad. Business logic does not belong in the View, it belongs in the Model. Control logic belongs in the controller. There is only one template engine that actually enforces the MVC pattern. If you don't desire the MVC pattern (perhaps you are moving beyond it), that one engine still helps you to not hurt yourself and encourages you to partition your functionality properly.
There is really only one good template engine: StringTemplate. See http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf for details of why.
I have used it on multiple platforms (Python, Java, .Net) as well as many of the alternatives, and StringTemplate rules.
Decision done. Enjoy. Best wishes.
Others have mentioned string template, but we recently switched to MVEL (which also does more, but really doesn't add much weight): http://mvel.codehaus.org/ (and I find it easier to use).
IMHO Chunk Templating engine is the best. The jar file only has 180 KB! and support IF and iteration. How cool is that !
Don't know how lightweight you'd consider it but Apache Velocity is one of the best-known templating engines for Java.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With