All, I was just reminded of the horror of the Struts 2 implementation of their tag library in Velocity. Mind you, I think the S2 guys did a /great/ job of creating implementations of their library in JSP, Freemarker, and Velocity, but the Velocity implementation just doesn't feel right.
Here's what you see in JSP (and, do a large degree, Freemarker is nearly
identical):
<struts:someTag foo="bar" baz="whatever">
...
In Velocity, since named macro parameters are not supported, you get
something like this:
#strutsSomeTag("foo=bar" "baz=whatever")
(See http://struts.apache.org/2.0.11.2/docs/velocity-tags.html for
reference).
While that does get the job done, you can see that, for every evaluation
of the macro, the S2 implementation has to re-parse the strings that are
being passed-in in order to grab the parameter value and then assign it
to the actual attribute on whatever object that represents the tag itself.
Performance-wise, it's a hog. That means that Velocity starts with a
built-in performance disadvantage when it comes to using S2. It's also
visually cumbersome, since the attribute AND value are all within the
quotes. Perhaps I'm being nit-picky, but I've considered abandoning
Velocity for my next Struts project (which will be using S2). I would
imagine that I'm not the only one who would come to this conclusion.
So, my question is: can we do better? I wonder if there's a way to add
something to the Velocity language that would give users a more
tag-oriented syntax that would "feel" more like JSP/Fm and yield better
performance.
-chris
signature.asc
Description: OpenPGP digital signature
