Yes, please add it. 

Mit freundlichen Grüßen
Christian Giambalvo
--
Fachinformatiker für Anwendungsentwicklung

EXCELSIS Informationssysteme GmbH
Wilhelmsplatz 8 - 70182 Stuttgart
Mobile +49 176 196 32 406
Office +49 711 6 20 30 406
christian.giamba...@excelsisnet.com
www.excelsisnet.com
www.twitter.com/excelsis_info

Sitz Stuttgart
Amtsgericht Stuttgart, HRB 21104
Geschäftsführer: Christian Sauter, Dr. Nils Herda, Frank Wolf


-----Ursprüngliche Nachricht-----
Von: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com] 
Gesendet: Dienstag, 6. Oktober 2009 11:48
An: users@wicket.apache.org
Betreff: Re: Send file to client via Ajax

Nice to hear it was of some help! I have learned a bit too while doing it:-)
Cheers,

Ernesto

P.S. Shall I add this to a Wiki page?... when I find the time;-)

On Tue, Oct 6, 2009 at 11:39 AM, Giambalvo, Christian <
christian.giamba...@excelsisnet.com> wrote:

> Works like a charm.
> I think i've learned something about resource download via ajax.
> Thanks for hat.
>
>
> Mit freundlichen Grüßen
> Christian Giambalvo
> --
> Fachinformatiker für Anwendungsentwicklung
>
> EXCELSIS Informationssysteme GmbH
> Wilhelmsplatz 8 - 70182 Stuttgart
> Mobile +49 176 196 32 406
> Office +49 711 6 20 30 406
> christian.giamba...@excelsisnet.com
> www.excelsisnet.com
> www.twitter.com/excelsis_info
>
> Sitz Stuttgart
> Amtsgericht Stuttgart, HRB 21104
> Geschäftsführer: Christian Sauter, Dr. Nils Herda, Frank Wolf
>
> -----Ursprüngliche Nachricht-----
> Von: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com]
> Gesendet: Dienstag, 6. Oktober 2009 11:31
> An: users@wicket.apache.org
> Betreff: Re: Send file to client via Ajax
>
> Just sent it on my last e-mail! Here it is again!
> import org.apache.wicket.IResourceListener;
> import org.apache.wicket.markup.html.WebMarkupContainer;
>
> /**
>  * @author  Ernesto Reinaldo Barreiro (reier...@gmail.com)
>  *
>  */
> public class DocumentResourceListener extends WebMarkupContainer implements
> IResourceListener
> {
> private static final long serialVersionUID = 1L;
>  private IResourceListener resourceListener;
>
> /**
>  * Constructor receiving an IResourceListener..
>  *
>  * @param id
>  * @param resourceListener
>  */
> public DocumentResourceListener(final String id, IResourceListener
> resourceListener)
> {
> super(id);
> this.resourceListener = resourceListener;
> }
>
> /**
>  * Gets the url to use for this link.
>  *
>  * @return The URL that this link links to
>  */
> protected CharSequence getURL()
> {
> return urlFor(IResourceListener.INTERFACE);
> }
>
>
> @Override
> protected boolean getStatelessHint()
> {
> return false;
> }
>  public void onResourceRequested() {
> this.resourceListener.onResourceRequested();
> }
> }
>
> This is just a trick to have component that generates file contents on the
> same page! I think you could used mounted resources as well, or just a
> dedicated servlet if you want to get file generation out of wicket!
>
> Best,
>
> Ernesto
>
> On Tue, Oct 6, 2009 at 11:24 AM, Giambalvo, Christian <
> christian.giamba...@excelsisnet.com> wrote:
>
> > Yes it would be usefull.
> > But where does DocumentResourceListener came from?
> > I'm using wicket 1.3.6 and DocumentResourceListener is not available.
> >
> > Thanks
> >
> > Mit freundlichen Grüßen
> > Christian Giambalvo
> > --
> > Fachinformatiker für Anwendungsentwicklung
> >
> > EXCELSIS Informationssysteme GmbH
> > Wilhelmsplatz 8 - 70182 Stuttgart
> > Mobile +49 176 196 32 406
> > Office +49 711 6 20 30 406
> > christian.giamba...@excelsisnet.com
> > www.excelsisnet.com
> >
> > Sitz Stuttgart
> > Amtsgericht Stuttgart, HRB 21104
> > Geschäftsführer: Christian Sauter, Dr. Nils Herda, Frank Wolf
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: Ernesto Reinaldo Barreiro [mailto:reier...@gmail.com]
> > Gesendet: Dienstag, 6. Oktober 2009 09:54
> > An: users@wicket.apache.org
> > Betreff: Re: Send file to client via Ajax
> >
> > Hi Cristian,
> > I've got it working!
> >
> > Just place all the following files at the same package and you will get a
> > working example (I tested them with FF35 and IE7).
> >
> > import org.apache.wicket.ajax.AjaxRequestTarget;
> > import org.apache.wicket.ajax.markup.html.AjaxLink;
> > import org.apache.wicket.markup.html.WebPage;
> > import org.apache.wicket.markup.html.basic.Label;
> > import org.apache.wicket.model.AbstractReadOnlyModel;
> >
> > /**
> >  * @author  Ernesto Reinaldo Barreiro (reier...@gmail.com)
> >  *
> >  */
> > public class TestPage extends WebPage{
> >
> > private Label text;
> >  private String labelText = "Hi!";
> >  private DocumentResourceListener documentResourceListener;
> >
> >  /**
> >  *
> >  */
> > public TestPage() {
> >  AjaxLink<Void> link = new AjaxLink<Void>("link") {
> >  private static final long serialVersionUID = 1L;
> >
> > @Override
> > public void onClick(AjaxRequestTarget target) {
> > TestPage.this.labelText = "Hi! and donwload image!";
> > if(target!= null) {
> > target.addComponent(TestPage.this.text);
> > String url = documentResourceListener.getURL().toString();
> > target.appendJavascript(";alert('Hi');window.location.href='"+url+"';");
> > }
> > }
> > };
> >  add(link);
> > text = new Label("text", new AbstractReadOnlyModel<String>() {
> >  private static final long serialVersionUID = 1L;
> >
> > @Override
> > public String getObject() {
> > return TestPage.this.labelText;
> > }
> > });
> > text.setOutputMarkupId(true);
> > add(text);
> >  documentResourceListener = new DocumentResourceListener("listener", new
> > MyPdfResource());
> >  add(documentResourceListener);
> > }
> >
> > }
> >
> > ---------------------------
> >
> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> >   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
> > <html xmlns:wicket="org.apache.wicket">
> > <head>
> > </head>
> > <body>
> > <a wicket:id="link">Click Me</a>
> > <span wicket:id="text"></span>
> > <div wicket:id="listener"></div>
> > </body>
> > </html>
> >
> > ---------------------------------
> >
> > import java.io.ByteArrayOutputStream;
> > import java.io.IOException;
> > import java.io.InputStream;
> > import java.io.OutputStream;
> >
> > import org.apache.wicket.markup.html.DynamicWebResource;
> > import org.apache.wicket.protocol.http.WebResponse;
> >
> > /**
> >  * @author  Ernesto Reinaldo Barreiro (reier...@gmail.com)
> >  *
> >  */
> > public class MyPdfResource extends DynamicWebResource {
> >
> > private static final long serialVersionUID = 1L;
> >
> > static int BUFFER_SIZE = 10*1024;
> >  /**
> >  *
> >  */
> > public MyPdfResource() {
> > }
> >
> > /* (non-Javadoc)
> >  * @see
> org.apache.wicket.markup.html.DynamicWebResource#getResourceState()
> >  */
> > @Override
> > protected ResourceState getResourceState() {
> > return new ResourceState() {
> >  @Override
> > public String getContentType() {
> > return "application/pdf";
> > }
> >  @Override
> > public byte[] getData() {
> > try {
> > return
> bytes(MyPdfResource.class.getResourceAsStream("jta-1_1-spec.pdf"));
> > } catch (Exception e) {
> > return null;
> > }
> > }
> > };
> > }
> >  public static  byte[] bytes(InputStream is) throws IOException {
> > ByteArrayOutputStream out = new ByteArrayOutputStream();
> > copy(is, out);
> > return out.toByteArray();
> > }
> >  @Override
> > protected void setHeaders(WebResponse response) {
> > super.setHeaders(response);
> > response.setAttachmentHeader("jta-1_1-spec.pdf");
> > }
> >  public static void copy(InputStream is, OutputStream os) throws
> > IOException
> > {
> > byte[] buf = new byte[BUFFER_SIZE];
> > while (true) {
> > int tam = is.read(buf);
> > if (tam == -1) {
> > return;
> > }
> > os.write(buf, 0, tam);
> > }
> > }
> > }
> >
> > Just replace "jta-1_1-spec.pdf" with your own PDF file on MyPdfResource
> and
> > the exampel should work. An important bit here if
> >
> > @Override
> > protected void setHeaders(WebResponse response) {
> > ....
> > response.setAttachmentHeader("jta-1_1-spec.pdf");
> > }
> >
> > which makes the file to treated as an attachment instead of replacing the
> > current page.
> >
> > Best,
> >
> > Ernesto
> >
> > P.S. Would it useful  to add this to Wicket's wiki?
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> > For additional commands, e-mail: users-h...@wicket.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to