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]
