Hi Josh; I have already tried with PageRenderLinkSource but It has the same behavior. I did not know the difference between LinkSource and PageRenderLinkSource, thanks for the information!
David ------------------------------------------------------------------ David Germán Canteros 2011/8/5 Josh Canfield <joshcanfi...@gmail.com> > Also. > > private LinkSource linkSource; > > This is an internal class, you should be using PageRenderLinkSource. > You can replace: > > > linkSource.createPageRenderLink(DisplayImagePage.class.getSimpleName(), > false, new Object[]{imageId}); > > with > > > pageRenderLinkSource.createPageRenderLinkWithContext(DisplayImagePage.class, > imageId); > > Josh > > On Fri, Aug 5, 2011 at 1:39 PM, David Canteros > <davidcanteros....@gmail.com> wrote: > > Hi > > I have to show a image loaded from database BLOB field. I implemented > > Thiago's suggestion, I have created a page with the following code: > > > > public class ShowImagePage { > > > > @Inject > > private LinkSource linkSource; > > (...) > > > > public Link *getUploadedFile*(String imageId) { > > return > > linkSource.createPageRenderLink(DisplayImagePage.class.getSimpleName(), > > false, new Object[]{imageId}); > > } > > > > public StreamResponse *onActivate*(String imageId) { > > this.filename = imageId; > > return new StreamResponse() { > > > > public String *getContentType*() { > > return contentType; > > } > > > > public InputStream *getStream*() throws IOException { > > User user = > > (User)_request.getSession(true).getAttribute("user"); > > return user.getImage(); > > } > > > > public void *prepareResponse*(Response response) { > > response.setHeader("Content-Disposition", "inline; > > filename=" + filename > > + ((extension == null) ? "" : ("." + > > extension))); > > } > > }; > > } > > } > > ** > > In the javacode of the page where i have to show the image, I injected > the > > above page and wrote this method > > > > public Link *getImageLink*(ImageId){ > > return showImagewPage.getUploadedFile(imageId); > > } > > and in html code I put this: > > > > <img src="${imageLInk}"/> > > > > It works fine, the image is showed but when I refresh the page (with F5), > > the image dissapear. It behavior does not occur if I submit some form > placed > > in the same page that refresh the page too (the method "onSubmitFrom..." > > returns "this" ). I have debugged the code and everything works fine, do > you > > have any idea about this behavior? > > > > Thanks!! > > > > ------------------------------------------------------------------ > > David Germán Canteros > > > > > > 2011/3/11 Rich M <rich...@moremagic.com> > > > >> Thanks everyone for the responses so far, conceptually I think this is > >> coming together for me. > >> > >> So, I'm glad the context path was not a good idea, it felt dirty from > the > >> beginning. Avoiding that, there are two main options: use the database > to > >> store/retrieve the images, or use a configured system folder from where > I > >> can load/save files with Java IO. > >> > >> Regardless of the option chosen there, the image file will be captured > as > >> an InputStream and returned as a StreamResponse in some form to a > >> page/component. > >> > >> As far as linking the StreamResponse to an HTML IMG tag, I believe I > >> understand the various options presented here. > >> > >> LLTYK suggests using an EventLink. I was looking through my code and > found > >> a Captcha implementation I have using a propertyExpression in the TML on > the > >> src attribute of <IMG> to reference a getImageLink function that returns > >> ComponentResources.**createActionLink("image",null)**. Then there is an > >> onImage() action handler method that returns a StreamResponse. I > understand > >> this is ActionLink and not EventLink, but I think the concept must be > nearly > >> identical. > >> > >> Alternately, Thiago is suggesting that instead of using > ComponentResources > >> to generate an ActionLink or EventLink, it may be easier to create a > >> seperate Page that handles returning just a StreamResponse. In that case > the > >> EventLink can be replaced with a PageLink and using an activation > context > >> the ID for the Image can be passed to the Page so it can load the Image, > >> build the StreamResponse, and return it. > >> > >> <30 minutes later> Okay, the PageLink works out, great! I can see the > >> biggest issue I was having was setting up the src attribute for IMG > >> correctly. I was stuck thinking it was either the URL to the context > path or > >> the StreamResponse itself, rather than a link to an event or page that > >> returns the StreamResponse. > >> > >> Thanks, > >> Rich > >> > >> > >> > >> On 03/11/2011 08:08 AM, Thiago H. de Paula Figueiredo wrote: > >> > >>> On Fri, 11 Mar 2011 09:24:35 -0300, LLTYK <ll...@mailinator.com> > wrote: > >>> > >>> Nobody's mentioned createEventLink. That's where you get the image > url, > >>>> create an event link pointing to the event handler that returns the > >>>> stream response. > >>>> > >>> > >>> I haven't mentioned it because my preferred approach is to create a > page > >>> just for returning StreamResponses. It's more reusable, as it can be > used to > >>> serve images for any page, while an event must be only used inside a > give > >>> page. > >>> > >>> > >> > >> > ------------------------------**------------------------------**--------- > >> To unsubscribe, e-mail: users-unsubscribe@tapestry.**apache.org< > users-unsubscr...@tapestry.apache.org> > >> For additional commands, e-mail: users-h...@tapestry.apache.org > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >