You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by H....@MI.unimaas.nl on 2004/12/01 14:55:00 UTC
JXTemplate macro: how to create "return value"?
Hi guys,
I'm trying to create a jx:macro that does some processing and then stores
the result in a variable. I would like this macro to behave as a function,
i.e. pass the content of this variable to an external variable.
I've tried several approaches, but I don't get the result I want. Who can
help?
>From the dynamic repeater example I would assume that the following should
work, but it doesn't.
<jx:macro name="myMacro">
<jx:parameter name="someParameter"/>
<!-- do some processing -->
<jx:set var="resultvar" value="${processingresult}"/>
<jx:evalBody/>
</jx:macro>
<jx:set var="getResult" value="blah"/>
<myMacro someParameter="somevalue"/>
<jx:set var="getResult" value="${resultvar}"/>
</myMacro>
<p>${getResult}</p>
I would expect this to display the result of the macro, but it displays
"blah".
Any idea?
Thanks.
Bye, Helma
Re: JXTemplate macro: how to create "return value"?
Posted by oceatoon <t....@systheo.com>.
H.vanderLinden@MI.unimaas.nl wrote:
> Hi guys,
>
> I'm trying to create a jx:macro that does some processing and then stores
> the result in a variable. I would like this macro to behave as a function,
> i.e. pass the content of this variable to an external variable.
>
> I've tried several approaches, but I don't get the result I want. Who can
> help?
>
> From the dynamic repeater example I would assume that the following should
> work, but it doesn't.
>
> <jx:macro name="myMacro">
> <jx:parameter name="someParameter"/>
> <!-- do some processing -->
> <jx:set var="resultvar" value="${processingresult}"/>
> <jx:evalBody/>
> </jx:macro>
>
>
> <jx:set var="getResult" value="blah"/>
> <myMacro someParameter="somevalue"/>
> <jx:set var="getResult" value="${resultvar}"/>
> </myMacro>
>
> <p>${getResult}</p>
>
> I would expect this to display the result of the macro, but it displays
> "blah".
>
> Any idea?
>
> Thanks.
>
> Bye, Helma
Hi Helma
Variables seem to be restrained to the scope of the Macro (the same for
forEach), we work around this like this, maybe it'll work for you.
declare a global variable(we use a hash but you can use any structure):
<jx:set var="globalvars" value="${java.util.HashMap(5)}"/>
<myMacro someParameter="somevalue"/>
<jx:set var="push" value="${resultvar}"/>
<jx:set var="dummy" value="${globalvars.put('getResult', resultvar)}"/>
</myMacro>
<p>${globalvars.getResult}</p>
Regards
Tibor