Hi,

In that case, what do you think about changing the
TemplateService.renderTemplate() signature to allow the Context to be passed
in?

Velocity and Freemarker TemplateServices would just ignore it and function
exactly as before (they could trivially implement the new signature by just
calling the old one with a null), but a new JspTemplateService could now use
this Context to get the HttpServletRequest and Response, which would allow
it to render the Jsp normally via RequestDispatcher.include()

If writing to an intermediate String is preferred instead of writing
directly to output stream then a mock HttpServletResponse can be passed in.
This mock instance would implement the HttpServletResponse methods but would
internally write to a StringWriter instead of the OutputStream.
HttpServletResponseWrapper would make a handy starting point for writing
such a class.

Thoughts?  Should I repost in the dev forum?

Thanks
Ari


On Thu, Mar 3, 2011 at 2:07 AM, Bob Schellink <[email protected]> wrote:

> Hi,
>
> I'm not sure if that is possible actually. The question is how would you
> render the JSP template to
> a String which the Panel can return. If you know of a way you can create a
> custom Panel to achieve
> that. One route might be to create a custom HttpServletResponse using a
> ByteArray which you then
> forward to the container's JSP engine. Once it returns the byteArray should
> contain the content.
>
> Bob
>
>
> On 2011/03/03 04:14 AM, Ari wrote:
> > Minor corrections to my own question...
> >
> > 1) userLinks is a List<PageLink>, not an array.
> >
> > 2) I've overridden the Panel's getTemplate(), not the Page's.  The page
> merely includes the Panel
> > like any other component.
> >
> > Thanks again for any suggestions as to what might be wrong.
> >
> > Ari
> >
> > On Wed, Mar 2, 2011 at 4:40 PM, Ari <[email protected] <mailto:
> [email protected]>>
> > wrote:
> >
> >     Hi,
> >
> >     I wondered if someone might have a working example of a Panel being
> used with a JSP as its view
> >     template.  JSPs work ok for me with regular Click Pages, but when I
> try to use a Panel, I get
> >     errors of this nature:
> >
> >     [Click] [error] Velocity: Parser Exception:
> >
> /mypath/mypanel-template.jsporg.apache.velocity.runtime.parser.ParseException:
> Encountered
> >     ":length(userLinks)}\n<div>
> >
> >     userLinks is an Array<PageLink> which I've defined in my Panel.java
> subclass, and am referencing
> >     in the JSP as shown in the error, so it is reaching the JSP.  But it
> seems like Click is trying
> >     to interpret the template as Velocity instead of JSP, even though
> I've overridden the Page's
> >     getTemplate() method to return a jsp file name (as demonstrated by
> the fact that it reaches the
> >     jsp!).
> >
> >     Any advice or examples would be much appreciated.
> >
> >     Thanks,
> >     Ari
> >
> >
>
>

Reply via email to