Re: hot to pass objects to include page

Doug Kirk <[email protected]> Mon, 6 Oct 2003 10:11:50 -0500
Newsgroups gmane.comp.web.maverick.general
Message-ID <[email protected]>
With Velocity, this is a simple matter of creating macros to do your 
work for you. I use macros to generate my <select>'s from a database. 
Further, you can either place your macros in the file being rendered, 
or in the velocity global macro file.

So, in the global macro file you define:

#macro names($list)
   #foreach ($p in $list)
     $p.name
   #end
#end

Then, in your page, you simply write:

$names($model.projects)

In the macro above, Velocity doesn't care what type 'p' is, as it 
treats it as an Object any way; it will introspect for an accessor for 
the 'name' property and render it to the output.

Cheers,
Doug


On Monday, October 6, 2003, at 07:50 AM, Taavi Tiirik wrote:

>
> Hello,
>
> This is not entirely maverick specific but I am trying to find a
> solution to this in maverick environment hence the question.
>
> I am currently using jstl as a view technology but if this can
> be achieved with velocity and not with jstl then I am quite
> ready to switch. Prefer to find a quick jstl solution though.
>
> I would like to make my views more modular and reuse
> common components as much as possible. For example
> if I iterate over some sort of collection I would rather
> include a component that knows how to render this
> object instead of having similar rendering code in so
> many places.
>
> So instead of this:
> <c:forEach items="${model.projects}" var="p">
>     <c:out value="${p.name}"/>, etc.
> </c:forEach>
>
> I would like to have something like this: (does not work like this 
> though)
> <c:forEach items="${model.projects}" var="p">
>     <c:import url="/components/output-project.jsp">
>       <c:param name="project" value="${p}"/>
>     </c:import>
> </c:forEach>
>
> and something like this in output-project.jsp:
> <c:out value="${param.project.name}"/>, etc.
>
> This kind of approach works as far as I only pass simpe strings
> but not with beans, etc. I need beans :)
>
> So please tell me how do you do this?
>
> best regards,
> Taavi
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> [INVALID FOOTER]
>
>



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
[INVALID FOOTER]