Hi again Josh, i had not seen your first response, there was the solution to my problem. Thank you! David
------------------------------------------------------------------ David Germán Canteros 2011/8/6 David Canteros <davidcanteros....@gmail.com> > Yes, user is an object loaded in the setupRender() method, and getImage() > returns an InputStream every time the page is loaded. > > > ------------------------------------------------------------------ > David Germán Canteros > > > 2011/8/5 Josh Canfield <joshcanfi...@gmail.com> > >> The real issue is more likely the first point, you're getting your >> InputStream from an object from the session. Does calling getImage() >> return a new InputStream every time? >> >> On Fri, Aug 5, 2011 at 2:44 PM, David Canteros >> <davidcanteros....@gmail.com> wrote: >> > 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 >> >> >> >> >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> >