Thank you for your answer.

I'm not sure I was completely clear so I'll give a more precise example of what I'm trying to do.

Let's say I have a tool that has a method createObject().
This method returns an object that has a getProp() method returning "hello". The tool also has a method getExpression() returning the string "$obj.getProp()".

I'm trying to make a velocimacro that given this:

#set ($obj = $myTool.createObject())
#set ($expr = $myTool.getExpression())
#myMacro($expr)

Would generate this:

hello


So I would need something like eval($expr) that would evaluate the content of $expr which is $obj.getProp(). Obj being declared before it would call the method and return "hello".

I have no idea on how to create such a macro or if it is possible.

Thank you very much for your help.

BoD



Tony Oslund a écrit :
If you read the Velocity docs you will find that it encourages you to
access methods on your objects rather than trying to access a property
directly.

Try doing $x.getValue(), or $y.doSomething() rather than attempting to
do x.myalue.

Along the same lines, if you are tempted to use arrays, use an ArrayList
with Velocity instead.

It is possible to access a method on an object within a Velocity
template that in turn returns the contents of another velocity template,
and so on and so on.  I currently use this to handle language
translation, managed content, and also reusable sections of web pages.

If you are truly looking for expression evaluation.  There is an open
source java library called beanshell.  It allows you to eval a java
expression.  I have used it behind the scenes to perform Boolean
evaluation of string expressions like {X} or {Y} and not {Z}, etc.  It
works very well.

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of BoD
Sent: Wednesday, March 29, 2006 8:56 AM
To: [email protected]
Subject: Expression evaluation inside a template?

Hi!

In a template, is there a way to evaluate a Velocity expression inside a

variable ?
For example, let's say I have set in a Java screen a variable "expr" with the value "$myObj.prop" in the context.

Now I'd like to evaluate the expression represented by $expr when I'm in

the template. Is there any way to do that, something like eval($expr)?

Thank you very much for your help!

BoD


---------------------------------------------------------------------
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]

Reply via email to