Incidentally, why stop at <v:set>?  I'd also expect to see <v:if>,
<v:choose>/<v:when> (for if/then/else), <v:out>.

One big advantage of Velocity over JSTL is the ability to easily
create macros.  Defining a macro <v:macro> at the top of the page then
using it below would be quite nice.  It'd be trickier to implement
though.  The above tags could all execute stand-alone VTL, but
<v:macro> would need to have some kind of connection with the tags
later in the page.

WILL

On 8/20/06, Will Glass-Husain <[EMAIL PROTECTED]> wrote:
Hi Jeff,

Now I get it.  If you built a simpler tag that always stored a String
object this would be easy-- just use Velocity.evaluate as I suggest.
But you want to evaluate an expression to a resulting object.

Seems to me that you want this to act similar to the Velocity #set.
You might start by looking at the class
o.a.v.runtime.parser.node.ASTSetDirective.  The key line is:

        Object value = right.value(context);

which evaluates the right hand side of the #set expression.

One way of approaching this is to consider that Velocity.evaluate()
basically ends up calling Node.render() which is a recursive series of
parser nodes that output to a Writer.  You need a similar starting
point to call Node.value() which will recursively evaluate an
expression.

Just a few quick thoughts, hope they point you in a useful direction...

WILL

On 8/19/06, Jeff Schnitzer <[EMAIL PROTECTED]> wrote:
> I'm just evaluating Velocity expressions.  The result of the expression
> should be an object, whereas Velocity.evaluate() renders output to a
> Writer as text.  The method I'm looking for would look something like this:
>
> public Object evaluate(Context ctx, String expression);
>
> For example:
>
> ctx.put("now", Calendar.getInstance());
> TimeZone tz = (TimeZone)evaluate(ctx, "now.timeZone");
>
> The Introspector seems to be much, much lower level than this.
>
> Thanks,
> Jeff
>
> Will Glass-Husain wrote:
> > Not sure I get it.  Are you making a new expression language or just
> > evaluating Velocity expressions?
> >
> > The introspector is what resolves objects and methods in Velocity.
> >
> > WILL
> >
> > On 8/19/06, Jeff Schnitzer <[EMAIL PROTECTED]> wrote:
> >> Velocity.evaluate() renders textual output to a Writer.  For the
> >> expression language to work, I need to resolve objects.  I can't find
> >> anything in the javadocs that might give me a hook.
> >>
> >> Any suggestions?
> >>
> >> I know, I need to wade through the code, but a few starting pointers
> >> would help.
> >>
> >> Thanks,
> >> Jeff
> >>
> >>
> >> Will Glass-Husain wrote:
> >> > Wow!  As a both a Velocity enthusiast and JSTL junkie that sounds like
> >> > a really useful tag.
> >> >
> >> > It doesn't sound that hard to me.  Extract the expression, call
> >> > Velocity.evaluate, and set the request attribute.  I guess you'd have
> >> > to set up the context with all the beans first.
> >> >
> >> > WILL
> >> >
> >> >
> >> > On 8/17/06, Jeff Schnitzer <[EMAIL PROTECTED]> wrote:
> >> >> Short version:  I wish for a JSP custom tag that will effectively
> >> let me
> >> >> use Velocity expressions instead of the anemic JSTL expressions.
> >> >>
> >> >> Long version:
> >> >>
> >> >> Velocity already has a custom JSP tag that lets me do this:
> >> >>
> >> >> <vel:velocity>
> >> >>     #if(true) cool velocity stuff #end
> >> >> </vel:velocity>
> >> >>
> >> >> However, what I really really want is something that lets me use
> >> >> velocity expressions the way I would use JSTL expressions.  The most
> >> >> important is this:
> >> >>
> >> >> <vel:set var="foo" value="${cool.velocity(syntax)}" />
> >> >>
> >> >> The inability of JSTL expressions to call arbitrary java methods
> >> results
> >> >> in muchhacking and hair pulling.  Velocity expressions rock.  I want
> >> >> them :-)
> >> >>
> >> >> How hard would it be to make a <vel:set> tag?  I looked around the
> >> APIs
> >> >> but couldn't find anything helpful.
> >> >>
> >> >> Thanks,
> >> >> Jeff
> >> >>
> >> >> ---------------------------------------------------------------------
> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >> >>
> >> >>
> >> >
> >> >
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Forio Business Simulations

Will Glass-Husain
[EMAIL PROTECTED]
www.forio.com



--
Forio Business Simulations

Will Glass-Husain
[EMAIL PROTECTED]
www.forio.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to