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
>
>

Reply via email to