开发者

Showing images outside my application using Tapestry5

开发者 https://www.devze.com 2023-04-12 06:15 出处:网络
I am developing my first project with Tapestry and I am about to finish, except for the images.. What do I want? I just need to display an image outside my application, example: /home/app/images/imag

I am developing my first project with Tapestry and I am about to finish, except for the images..

What do I want? I just need to display an image outside my application, example: /home/app/images/image.jpg

What did I try? I have been "googling" and reading Tapestry5 forums, I found this: http://wiki.apache.org/tapestry/Tapestry5HowToStreamAnExistingBinaryFile

I followed the steps, creating classes but I need to display the image embed on another page (so I can't use ImagePage), I tried this:

On page java class

public StreamResponse getImage() {
        InputStream input = DetallesMultimedia.class
                .getResourceAsStream("/home开发者_运维问答/santi/Escritorio/evolution-of-mario.jpg"); //On application, i will retrieve this from DB
    return new JPEGInline(input,"hellow");
}

On page template

...
<img src="${image}" alt:image/>
...

or

...
${image}
...

Obviusly, this didn't work and I really don't know how can I do it. I read about loading the image on an event (returning the OutputStream on that event, as it's said in the HowTo linked above) but my english is so bad (I am sure you already noticed) and I don't understand well how can I do that.

Could you help me please?

Thanks you all.


I've never seen the examples as on the wiki page. Below some code on how to load an image on the classpath though using a StreamResponse.

@Inject
private ComponentResources resources;

@OnEvent(value = "GET_IMAGE_STREAM_EVENT")
private Object getProfilePic() throws Exception {


    InputStream openStream = DetallesMultimedia.class.getResourceAsStream("/home/santi/Escritorio/evolution-of-mario.jpg");
    byte[] imageBytes = IOUtils.toByteArray(openStream);
    final ByteArrayInputStream output = new ByteArrayInputStream(imageBytes);

    final StreamResponse response = new StreamResponse() {

        public String getContentType() {
           "image/jpegOrPngOrGif";
        }

        public InputStream getStream() throws IOException {
            return output;
        }

        public void prepareResponse(Response response) {
            // add response headers if you need to here
        }

    };
    return response;
}

public String getPicUrl() throws Exception {
    return resources.createFormEventLink("GET_IMAGE_STREAM_EVENT");
}

In your template:

<img src="${picUrl}"/>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号