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

Reply via email to