Context is bound to a ThreadLocal so you can just look it up. No need to change method signatures.
Bob On 2011/03/03 20:28 PM, Ari wrote: > 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] > <mailto:[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]> <mailto:[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 > > > > > >
