It doesn't... :-)

Thank you anyway! :-)
-----Original Message-----
From: Riyad Kalla [mailto:[email protected]] 
Sent: Tuesday, March 02, 2010 6:35 PM
To: [email protected]
Subject: Re: DownloadLink problem

Martin,

If it makes you feel any better, it would have been a week or longer before
I thought to change that, good fine :)

-R

On Tue, Mar 2, 2010 at 9:32 AM, Martin Asenov <[email protected]> wrote:

> Oh my God!!! The problem was that the button that is supposed to do the
> export was of type submit and it reloads the page, instead of refreshing
> components. I changed to type=button and everything's fine...
>
> As people say - there is no patch for human stupidity...
>
> Thank you all for the help!
>
> Best,
> Martin
>
> -----Original Message-----
> From: Martin Asenov [mailto:[email protected]]
> Sent: Tuesday, March 02, 2010 4:34 PM
> To: [email protected]
> Subject: RE: DownloadLink problem
>
> Thanks Ernesto!
>
> But I want to have the link invisible on startup (because the file's
> empty). So I have this: (doesn't work, but has to)
>
>    exportedFileLink = new DownloadLink("exported_file_link", new
> LoadableDetachableModel<File>() {
>
>      private static final long serialVersionUID = 1L;
>
>      @Override
>      protected File load() {
>        return exportedFile;
>      }
>    }, PhonebookExporter.OUTPUT_FILE_NAME) {
>
>      private static final long serialVersionUID = 1L;
>
>      @Override
>      public boolean isVisible() {
>        return exportedFile != null;
>      }
>    };
>    final WebMarkupContainer exportedFileLinkHolder = new
> WebMarkupContainer("link_holder");
>    exportedFileLinkHolder.setOutputMarkupId(true);
>    exportedFileLinkHolder.add(exportedFileLink);
>
>    rightForm.add(exportedFileLinkHolder);
>    rightForm.add(new AjaxButton("export_button") {
>
>      private static final long serialVersionUID = 1L;
>
>      @Override
>      protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
>
>        PhonebookExporter exporter = getExporter();
>        exportedFile = exporter.export(uploadFolder);
>
>        if (exportedFile == null) {
>          error(getString("not_exported"));
>        } else {
>          info(getString("exported"));
>        }
>
>        target.addComponent(exportedFileLinkHolder);
>        target.addComponent(feed);
>      }
>
>    });
>
> I really start to get pissed off by this one!!! grrrr
>
> Regards,
> Martin
>
> -----Original Message-----
> From: Ernesto Reinaldo Barreiro [mailto:[email protected]]
> Sent: Tuesday, March 02, 2010 3:50 PM
> To: [email protected]
> Subject: Re: DownloadLink problem
>
> Weird. Just try this example:
>
> import java.io.File;
>
> import org.apache.wicket.ajax.AjaxRequestTarget;
> import org.apache.wicket.ajax.markup.html.AjaxLink;
> import org.apache.wicket.markup.html.link.DownloadLink;
> import org.apache.wicket.markup.html.panel.Panel;
> import org.apache.wicket.model.AbstractReadOnlyModel;
>
> /**
>  * @author Ernesto Reinaldo Barreiro ([email protected])
>  *
>  */
> public class TestDownLoadLink extends Panel {
>
>
>    private static final long serialVersionUID = 1L;
>
>    private File test = null;
>
>    private DownloadLink download;
>    /**
>     * @param id
>     */
>    public TestDownLoadLink(String id) {
>        super(id);
>
>        this.download = new DownloadLink("download", new
> AbstractReadOnlyModel<File>(){
>
>                                     private static final long
> serialVersionUID = 1L;
>
>                                    @Override
>                                    public File getObject() {
>                                        return test;
>                                    }
>
>                                 },"TestDownLoadLink.html") {
>
>        private static final long serialVersionUID = 1L;
>
>        @Override
>        public boolean isEnabled() {
>
>            return test != null;
>        }
>     };
>     download.setOutputMarkupId(true);
>     add(download);
>
>     AjaxLink<Void> update = new AjaxLink<Void>("update") {
>
>        private static final long serialVersionUID = 1L;
>
>        @Override
>        public void onClick(AjaxRequestTarget target) {
>            test = new
>
> File(TestDownLoadLink.class.getResource("TestDownLoadLink.html").getFile());
>            if(target != null) {
>                target.addComponent(TestDownLoadLink.this.download);
>            }
>        }
>     };
>
>     add(update);
>    }
> }
>
> and the HTML
>
> <html xmlns:wicket="org.apache.wicket">
> <head>
> </head>
> <body>
> <wicket:panel>
> <a wicket:id="download">download</a>
> <a wicket:id="update">Click me to update download</a>
> </wicket:panel>
> </body>
> </html>
>
> Just place them somewhere and do
>
> new TestDownLoadLink("xxx");
>
> It works for me. First time the download link is disable and when you click
> on the AJAX link file is assigned, link is refreshed and you can download
> your file;-)
>
> Best,
>
> Ernesto
>
> On Tue, Mar 2, 2010 at 2:24 PM, Martin Asenov <[email protected]> wrote:
>
> > Unfortunately doesn't work this way... The model is never refreshed...
> >
> > -----Original Message-----
> > From: Ernesto Reinaldo Barreiro [mailto:[email protected]]
> > Sent: Tuesday, March 02, 2010 2:31 PM
> > To: [email protected]
> > Subject: Re: DownloadLink problem
> >
> > Not sure... but could you try something like:
> >
> > DownloadLink downloadLink = new DownloadLink("link_id", new
> > AbstractReadOnlyModel<File>(){
> >            public File getObject() {
> >                return this.linkModel;
> >            };
> >        },"myfile.xxx");
> >        downloadLink.setOutputMarkupId(true);
> >
> > and make linkModel a member variable? This way file will be "refreshed".
> >
> > Best,
> >
> > Ernnesto
> >
> > On Tue, Mar 2, 2010 at 1:14 PM, Martin Asenov <[email protected]> wrote:
> >
> > > Hi, guys!
> > >
> > > I experience some DownloadLink problem - I have these fields:
> > >
> > > File linkModel;
> > > DownloadLink theLink = new DownloadLink("link_id", new
> > > Model<File>(linkModel));
> > > theLink.setOutputMarkupId(true);
> > >
> > > After another button click I have the linkModel field pointing to real
> > file
> > > on the file system. And then I say:
> > >
> > > target.addComponent(theLink);
> > >
> > > the link name is still invisible, and when I click on the small
> clickable
> > > area, Wicket comes up with:
> > >
> > > WicketMessage: Method onLinkClicked of interface
> > > org.apache.wicket.markup.html.link.ILinkListener targeted at component
> > > [MarkupContainer [Component id = exported_file_link]] threw an
> exception
> > >
> > > Root cause:
> > >
> > > java.lang.IllegalStateException:
> > > org.apache.wicket.markup.html.link.DownloadLink failed to retrieve a
> File
> > > object from model
> > >     at
> > >
> >
> org.apache.wicket.markup.html.link.DownloadLink.onClick(DownloadLink.java:141)
> > >     at
> > org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224)
> > >     at java.lang.reflect.Method.invoke(Method.java:597)
> > > I thought I've made everything perfect, but it seems that I haven't.
> > > Any help is appreciated!
> > >
> > > Best regards,
> > > Martin
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to