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
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]