Getting access to parent model
Chris <[email protected]>
| Newsgroups | gmane.comp.web.freemarker.user |
|---|---|
| Message-ID | <[email protected]> |
I'd like to be able to do something like this in a template:
// shows raw text
${my_variable}
// converts to a date type
${my_variable.asDate)
// runs some other arbitrary function on my_variable
${my_variable.asSomethingElse)
I got it to work (partially) by making "my_variable" a class that
implements both TemplateScalarModel and TemplateHashModelEx. I can get
both ${my_variable} and ${my_variable.whatever} to return scalars.
Now the tricky part: I need to return the hash values as objects that
implement TemplateMethodModelEx, and those methods need to get access to
the text of my_variable.
Unfortunately, Freemarker throws an error when it sees the
TemplateMethodModelEx ("Expecting a string, date or number here"), and I
haven't figured out how to get access to the parent model from within my
method so I can get the text value of "my_variable".
Is what I'm trying to do possible?
I think I could implement the bottom two by making my_variable a
TemplateHashModel and passing the string value to be converted to it.
The trouble is the top one. FreeMarker throws an exception rather than
just calling toString() on it. ERROR: Error on line X, column Y in
/results Expecting a string, date or number here, Expression item is
instead a com.MyHashModel.OrWhatever.
I'd be happy to do it using ? syntax instead: ${my_variable?asDate}, but
you can't create your own builtins (according to our exchange on this
topic Dec 9, 2010).
Is there any way to
------------------------------------------------------------------------------
Gaining the trust of online customers is vital for the success of any company
that requires sensitive data to be transmitted over the Web. Learn how to
best implement a security strategy that keeps consumers' information secure
and instills the confidence they need to proceed with transactions.
http://p.sf.net/sfu/oracle-sfdevnl