Re: hot to pass objects to include page
Travis Reeder <[email protected]> Mon, 06 Oct 2003 09:57:33 -0600
| Newsgroups | gmane.comp.web.maverick.general |
|---|---|
| Message-ID | <[email protected]> |
One way to do it with JSTL is to use jsp includes, then just include the
"component" wherever you want to use it. Other than that, I think you
have to make an component class and drop jstl for that component. Then
you could just plug in that componenent with <c:out
value="${myComponent.display}"/>
Travis
Doug Kirk wrote:
> 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]
>
> .
>
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
[INVALID FOOTER]